在 gevent wsgi 服务器上运行 Cherrypy 应用程序
我有一个现有的cherrypy应用程序,但我想知道是否可以在gevent wsgi服务器上运行它。我想我可以,但我无法访问 Linux 服务器来测试 gevent,并且无法让它在我的 Mac 上运行。
我的印象是这是可能的,因为双方都遵循 wsgi 规范。
有人试过这个吗?
我想一个例子如下所示:
import cherrypy
from gevent import wsgi
class Root(object):
def index(self):
return "hi!"
index.exposed = True
app = cherrypy.tree.mount(Root(), '/')
wsgi.WSGIServer(('', 8088), app).serve_forever()
I have an existing cherrypy application but I want to know is if it's at all possible to run it on the gevent wsgi server. I imagine I can but I don't have access to a linux server to test out gevent and haven't been able to get it to run on my mac.
I'm under the impression this is possible since each side follows wsgi spec.
Has anyone tried this?
I guess an example would look like the following:
import cherrypy
from gevent import wsgi
class Root(object):
def index(self):
return "hi!"
index.exposed = True
app = cherrypy.tree.mount(Root(), '/')
wsgi.WSGIServer(('', 8088), app).serve_forever()
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
这个例子将一直有效,直到您在cherrypy处理程序中遇到greenlet switch!因此,如果您在处理程序内使用 gevent 进行异步通信,这将会失败。
cherrypy 使用全局对象来存储在cherrypy/__ init__.py:~350 中找到的响应和标头:
如果您暂停一个请求并且 gevent 切换到下一个处理,它将覆盖全局对象中的内容长度标头,您将面临奇怪的错误客户端。
This example will work until you encounter greenlet switch inside cherrypy handlers ! So this will fail if you use gevent for asynchronous communication inside handlers.
cherrypy uses global object for storing response and headers inside found inside cherrypy/__ init__.py:~350 :
If you pause one request and gevent switches to processing next it will overwrite content-length header in global object and you will face strange errors on client side.
那个例子效果很好。我确信 freenode 上的 #gevent 会帮助您解决任何安装问题。
That example works fine. I'm sure #gevent on freenode would help you with any installation issues.