<div dir="ltr">I'm trying use zmq_poll to poll both a zmq_socket and a file descriptor 
for a gpio input pin on a beaglebone using pyzmq.  Does anyone know if 
this is possible?  I wrote a python script that tries to poll on the 
gpio pin only (in order to keep the example as simple as possible).  
After opening an issue at pyzmq and some back and forth with the person 
who responded to my issue, it seems that what I'm asking for is not 
supported.<br>
<br>
My question, is what I'm asking for supported, and if not should I issue a feature request with zmq?<br>
<br>
Here is the example script.  I have two functions - wait and zmq_wait.  
wait blocks until I press a button connected to the gpio pin on the 
beaglebone.  zmq_wait never blocks::<br>
<br>
    import os, select, time<br>
    import zmq<br>
<br>
    class MyObj(object):<br>
        """<br>
        Pyzmq docs claim that any object<br>
        that provides a 'fileno' function<br>
        can be passed to the register function<br>
        of the zmq.Poller<br>
        """<br>
        def __init__(self, fd):<br>
            self.fd = fd<br>
            <br>
        def fileno(self):<br>
            return self.fd<br>
<br>
<br>
    def wait(fd):<br>
        os.read(fd, 2)<br>
        poller = select.poll()<br>
        poller.register(fd, select.POLLPRI)<br>
        events = poller.poll(-1)<br>
        os.lseek(fd, 0, 0)<br>
        val = os.read(fd, 2)<br>
        print 'poller returned', val<br>
<br>
<br>
    def zmq_wait(fd):<br>
        os.read(fd, 2)<br>
        poller = zmq.Poller()<br>
        poller.register(fd, zmq.POLLIN)<br>
        events = poller.poll(-1)<br>
        os.lseek(fd, 0, 0)<br>
        val = os.read(fd, 2)<br>
        print 'zmq poller returned', val<br>
<br>
    path = '/sys/class/gpio/gpio89/value'<br>
    #the gpio pin has already been configured as input, and to trigger an event<br>
    #on a rising edge by doing "echo 'rising' > /sys/class/gpio/gpio89/edge"<br>
    fd = os.open(path, os.O_RDONLY | os.O_NONBLOCK)<br>
<br>
    #this function blocks until I push the button<br>
    zmq_wait(fd) #returns immediately<br>
<br>
    wait(fd) #blocks until I push the button connected to the gpio pin<br>
<br></div>