首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将zerorpc作为greenlet运行?

如何将zerorpc作为greenlet运行?
EN

Stack Overflow用户
提问于 2013-10-06 19:48:30
回答 1查看 1.3K关注 0票数 1

我希望将zeroRPC服务器作为greenlet运行,同时在同一循环中运行其他gevent greenlet。ZeroRPC的文档有点轻量级。以下是启动zeroRPC服务器的建议方法:

代码语言:javascript
复制
s = zerorpc.Server(Cooler())
s.bind("tcp://0.0.0.0:4242")
s.run()

为了将服务器作为greenlet运行,我将运行封装在greenlet中:

代码语言:javascript
复制
s = zerorpc.Server(Cooler())
s.bind("tcp://0.0.0.0:4242")
gevent.spawn(s.run)

# More code and greenlets started.
# ...

但考虑到zeroRPC已经基于gevent,并且gevent框架中的其他服务器都有一个非阻塞的启动方法,这看起来有点笨拙。

有没有更好的方法来做这件事?

EN

回答 1

Stack Overflow用户

发布于 2014-01-16 04:17:57

这是最好的方法。

.run()方法将负责设置(zerorpc)服务器,根据需要生成和管理任何子greenlet。这将有效地创建一棵greenlet树,并将所有致命错误返回给.run()方法。zerorpc服务器将在一个新的greenlet中运行任何传入的请求,该greenlet是由.run()方法拥有的greenlet树生成的。

通过使用阻塞的.run()方法,您可以使用简单的try/catch来处理.run()引发的错误。此外,当.run()返回时,意味着zerorpc服务器完全停止。例如,当您从另一个greenlet调用.stop()时,zerorpc服务器将停止接受新请求,并在从.run()返回之前完成对活动请求的处理。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19208535

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档