It seems there are 2 approaches, either to use a zmq poller https://github.com/traviscline/gevent-zeromq/pull/20 or to use separate green threads for each socket, however this approach seems to have issues as well, https://github.com/traviscline/gevent-zeromq/issues/13 Is there any consensus on the proper way to broker multiple sockets together?