我想将ZeroMQ挂钩到gevent循环。使用ZeroMQ API,我可以为套接字获取一个fd。我如何在greenlet中观看这个套接字来处理POLLIN事件,而不会阻塞其他greenlet?在gevent上的fd上倾听POLLIN
2
A
回答
2
退房GEVENT-zeromq在github/PyPI中
0
这里是例如,从ZeroMQ。请求回复代理http://zguide.zeromq.org/py:rrbroker 它监听POLLIN事件,并且使用gevent-zeromq不会阻塞其他线程。
做这个你在找什么?
1
# for gevent >= 1.0
hub = gevent.get_hub()
watcher = hub.loop.io(fd, 1) # 1 = READ, 2 = WRITE, 3 = READ|WRITE
hub.wait(watcher)
# fd is now ready for reading
但是,如果想知道如何使用gevent-zeromq或扩展它来支持您的用例,那将会更好。
相关问题
- 1. 在django上测试gevent-socketio
- 2. 在Glassfish上倾听JNDI的变化 - 如何查看EventContext?
- 3. 倾听活动
- 4. 倾听jQuery中
- 5. epoll fd和pmoll上的epoll_wait
- 6. epoll:区分“侦听器”FD
- 7. 在Web3j中倾听事件
- 8. gevent多个StreamServer侦听器
- 9. Winsock2在fd 0(stdin)上的select()失败
- 10. 倾听所有CFNotifications?
- 11. epoll会通知所有进程在同一个fd上侦听吗?
- 12. 如何在Windows上安装gevent?
- 13. 在x86_64上安装gevent失败:“undefined symbol:evhttp_accept_socket”
- 14. 点上倾斜的椭圆
- 15. JavaScript:倾听属性更改?
- 16. 倾听添加表行
- 17. Parse.com倾听注销事件
- 18. 如何倾听双击jstree?
- 19. Windows上的gevent TCP服务器
- 20. 黑莓风暴 - 上倾斜
- 21. 在Windows上倾销VTable偏移量
- 22. 倾听某些传入的短信
- 23. 倾听来自不同的Android碎片
- 24. 列中的卡片互相倾听
- 25. 是否倾听$ q的广播角度?
- 26. Gevent崩溃python。核心倾倒(refcount太小)。怎么了?
- 27. rallytextfield上的听众
- 28. Angular 2获取组件相互倾听
- 29. 倾听所有JInternalFrame事件 - Java
- 30. CustomListView点击倾听者与Firebase
是的,检查出来,并感谢编写它!不幸的是,它不符合我的利基需求。我可能会同时连接到我的XREP套接字的大量客户端,其中很多客户端可能会阻塞很长一段时间。因此我不能使用正常的zmq方法来连接N个工作套接字,因为它不能缩放。我的解决方法是在XREP套接字上侦听POLLIN,接收消息并在新的greenlet中处理它。一个greenlet将读/写同步到套接字。 AFAIK,在gevent-zeromq中我无法做到这一点。 – ysimonson
当然,只需要一个greenlet处理socket comm并产生新消息(并且可能使用Queue作为inter-greenlet comm)。 – tmc
单个greenlet必须处理套接字上的发送和接收消息,因为我不认为你可以在zmq中同时执行这两个消息。我不能只是在一个循环中使用recv(),因为它会在有潜在的消息发送时阻塞。当它知道有一条可读的消息时,它只需要recv()。 – ysimonson