我有一个现有的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()
答案 0 :(得分:3)
此示例将一直有效,直到您在cherrypy处理程序中遇到greenlet切换!因此,如果您使用gevent进行处理程序内的异步通信,则会失败。
cherrypy使用全局对象存储在cherrypy / __ init__.py:~350中找到的响应和标题:
# Create request and response object (the same objects will be used
# throughout the entire life of the webserver, but will redirect
# to the "serving" object)
request = _ThreadLocalProxy('request')
response = _ThreadLocalProxy('response')
如果您暂停一个请求并将gevent切换到下一个处理,它将覆盖全局对象中的内容长度标头,您将在客户端遇到奇怪的错误。
答案 1 :(得分:2)
这个例子很好用。我确信freenode上的#gevent可以帮助您解决任何安装问题。