uWSGI& gevent持久网络套接字连接

时间:2013-07-18 09:08:52

标签: python uwsgi gevent

我们目前正在开发一个优先考虑性能的异步REST API。

最初,我们想要部署Node.js,因为它的事件驱动架构非常适合用例,但不幸的是,JavaScript还没有SCTP套接字的支持。

这引导我们使用Python,经过一些考虑后,我们决定选择uWSGI& GEVENT。

但是,由于架构的性质,有两个区域有很大的开销。

为了解决在内存中缓存数据的问题,我们使用了uWSGI缓存框架,它应该运行良好。

第二个问题是应用程序通过SCTP连接到后端处理程序。使用当前设置,将为每个请求建立和关闭此连接。每秒有数千个请求,这会留下很大的开销。

在理想情况下,我们希望永久建立套接字连接并继续为每个请求重复使用它。在PHP中,这可以通过持久套接字连接实现。 Python / uWSGI是否提供类似的功能?或者,我们可以使用uWSGI排队框架并以串联方式处理请求。

欢迎任何建议。

1 个答案:

答案 0 :(得分:0)

一旦启用了gevent模式,uWSGI变得纯粹(并且纯粹意味着不需要猴子路径)事件驱动(否则使用gevent没有任何优势)。 Gevent意味着事件驱动+ greenlet(避免你在node.js中编写基于回调地狱的代码)

更多关于魔术的信息:http://uwsgi-docs.readthedocs.org/en/latest/Async.html

WSGI应用程序是应用程序,所以如果你想拥有持久连接,只需在服务器启动或类似的东西上打开它,你就不需要像php那样的特殊支持。