使用 gevent 运行 Web 应用程序
我想尝试使用 gevent 作为 Web 服务器和应用程序框架。我没有看到任何方法可以“重新启动”服务器或更新应用程序代码,而无需再次终止并启动整个 python 应用程序。
事情就是这样完成的吗?也许这只是我理解与 apache 方式不同的范例的问题。
另外,作为一个半相关的问题,通过 gevent 运行 Web 服务器和站点/服务本身是一个好主意吗?我见过使用gunicorn作为服务器和gevent作为应用程序的其他实现,但从我所看到的基准来看,在扩展方面,gevent远远优于gunicorn作为服务器。
I want to try playing around with gevent as a web server and application framework. I don't see any way to "restart" the server or update the application code without killing and starting the whole python application again.
Is this just how it's done? Maybe it's just a matter of me understanding a different paradigm to the apache way.
Also, as a semi-related question, is it even a good idea to run a web server AND the site/service itself through gevent. I've seen other implementations using gunicorn for the server and gevent for the application but from the benchmarks I've seen, gevent far outperforms gunicorn as a server when it comes to scaling.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
Gunicorn 有 3 个 gevent 工作者:
gevent.wsgi 是一个基于 libevent 的快速 HTTP 服务器。
gevent.pywsgi 是用 Python 实现的 WSGI 服务器。
gevent.pywsgi 存在的原因是 libevent-http 有一些限制,例如不支持 keep-活动、流媒体、ssl 和 websockets。
请注意,新的gevent 的 Alpha 版本 (1.0a3) 使用libev 并且不包含基于 libevent-http 的 WSGI 服务器。目前,这里的 gevent.wsgi 是 gevent.pywsgi 的别名。
gevent中的服务器类没有任何与进程管理、重新启动、重新加载等相关的功能。不过,这些功能对于部署来说是必需的。 Gunicorn 为 gevent 的 WSGI 服务器提供了该功能。使用它。
Gunicorn has 3 gevent workers:
gevent.wsgi is a fast HTTP server based on libevent.
gevent.pywsgi is WSGI server implemented in Python.
The reason for existence of gevent.pywsgi is libevent-http having a few limitations, such as not supporting keep-alive, streaming, ssl and websockets.
Note, that the new alpha version (1.0a3) of gevent uses libev and does not include a WSGI server based on libevent-http. Currently, gevent.wsgi here is an alias for gevent.pywsgi.
The server classes in gevent don't have any features related to process management, restart, reload and so on. Those features are necessary for deployment though. Gunicorn provides that for gevent's WSGI servers. Use it.