Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/349.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python uWSGI&;gevent持久网络套接字连接_Python_Uwsgi_Gevent - Fatal编程技术网

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

Python uWSGI&;gevent持久网络套接字连接,python,uwsgi,gevent,Python,Uwsgi,Gevent,我们目前正在开发一个性能优先的异步RESTAPI 最初,我们希望部署Node.js,因为它的事件驱动架构非常适合用例,但不幸的是,JavaScript还不支持SCTP套接字 这就引出了Python,经过一些考虑,我们决定使用uWSGI和gevent 但是,由于体系结构的性质,有两个方面的开销很大 为了解决在内存中缓存数据的问题,我们使用uWSGI缓存框架,该框架应该性能良好 第二个问题是应用程序通过SCTP连接到后端处理程序。使用当前设置,将为每个请求建立并关闭此连接。由于每秒有数千个请求,因此

我们目前正在开发一个性能优先的异步RESTAPI

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

这就引出了Python,经过一些考虑,我们决定使用uWSGI和gevent

但是,由于体系结构的性质,有两个方面的开销很大

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

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

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


欢迎提供任何建议。

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

更多关于魔法的信息,请点击此处:


WSGI应用程序是应用程序,因此,如果您想拥有持久连接,只需在服务器启动或类似操作时打开它,就不需要像php那样的特殊支持。

gevent不是事件驱动的,这是什么意思?:)能否再次澄清设计中实体的顺序?类似于Internet->load balancer->uWSIG/gevent/Python application->?基于一个完全滞后的小细节,我对gevent有一些严重错误的概念。我想我现在都明白了。这确实是客户端->负载平衡器->uwsgi/gevent。我想我只是被完全延迟了,但只是想澄清一下我现在是否得到了它:每次uwsgi收到请求时,它都会通过输入函数将其路由到应用程序-通常是应用程序(环境、响应)。我们需要在服务器启动时设置的任何内容都只需进入加载文件时执行的函数定义之外的代码中。正确吗?后者已经是一个非常具体的问题,您需要显示相应的代码。