在python中启动zeroRPC服务器时遇到问题。我是根据official example来做的,但是当我调用run()方法时,它是在无休止的循环中工作的,所以我的程序在启动这个服务器后无法继续。我尝试在新线程中运行它,但出现以下异常:
LoopExit: ('This operation would block forever', <Hub at 0x7f7a0c8f37d0 epoll pending=0 ref=0 fileno=19>)
我真的不知道怎么修好它。有什么想法吗?在
Tags:
简而言之,您不能使用带有zerorpc的os线程。在
更长的答案:zerorpc python使用gevent作为IO。这意味着您的项目必须使用gevent并与之兼容。原生操作系统线程和gevent协同程序(也称为greenlet、green threads等)并不是真正的朋友。在
gevent(http://www.gevent.org/gevent.threadpool.html)中有一个本机线程池选项。在
不能生成本机操作系统线程并在其中运行gevent协同程序(包括zerorpc)。在
如果您正在使用gevent协同例程,那么不要在本机线程中运行
run()
,而是在gevent协同例程/greenlet/greenthread中运行它,如下所示:注意:如果gevent不是一个选项,一个解决方案是实现一个zerorpc python版本,它不使用gevent并在python外部实现其IO,但这有一个有趣的复杂性,而且不会很快发生。在
相关问题 更多 >
编程相关推荐