[zeromq-dev] GTK event loop integration, anybody?
Michael Haberler
mail17 at mah.priv.at
Fri Feb 8 20:47:11 CET 2013
Am 08.02.2013 um 19:10 schrieb Michael Haberler:
> Steven,
>
> Am 08.02.2013 um 18:39 schrieb Steven McCoy:
>
>> On 8 February 2013 12:31, Michael Haberler <mail17 at mah.priv.at> wrote:
>> I'm looking to into integrating zmq with a pyGTK (eventually pygobject) application, including event loop integration
>>
>> any pointers to a working example?
>>
>> You can wrap around zmq_poll.
>
> sorry, 'wrap around' was a tad above my pay grade ;)
>
> I see the following options:
>
> 1. poll from the idle loop (g_idle_add() or py equivalent)
> 2. poll in a glib timer event (g_timeout_add() or python equivalent)
> 3. use zmq_getsockopt/ZMQ_FD to retrieve the file descriptor associated with the socket and have the gtk main loop issue a callback on FD events
> 4. use the pyzmq gevent route
> 5. somehow have separate event loops (not sure if this is possible)
>
> 3) I'd feel confortable with rolling myself
> 5) ? dunno.
>
> 4) uses the dreaded libevent under the gevent Python package, so I'd rather not use that
> 1+2: not my style ;)
>
> is 3) reasonable? if not, what else?
this works fine for a start:
import gobject, zmq
def zmq_callback(self, fd, condition, zmq_socket):
while zmq_socket.getsockopt(zmq.EVENTS) & zmq.POLLIN:
(channel, msg) = zmq_socket.recv_multipart()
return True
....
zmq_fd = zmq_socket.getsockopt(zmq.FD)
gobject.io_add_watch(self.zmq_fd, gobject.IO_IN, self.zmq_callback, self.zmq_socket)
gtk.main()
-Michael
More information about the zeromq-dev
mailing list