Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/316.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 什么';生产中使用zeromq烧瓶的合适方法是什么?_Python_Flask_Zeromq - Fatal编程技术网

Python 什么';生产中使用zeromq烧瓶的合适方法是什么?

Python 什么';生产中使用zeromq烧瓶的合适方法是什么?,python,flask,zeromq,Python,Flask,Zeromq,我有一个接受HTTP请求的Flask应用程序。当某些HTTP请求传入时,我希望触发zeromq流上的消息。我希望zeromq流始终保持打开状态。我想知道做这件事的合适方法是什么。由于建议在生产中使用gunicorn和Flask,这是否意味着Flask应用程序将有多个实例,并且如果我将zeromq连接放在与Flask应用程序相同的位置,则其中只有一个可以连接,其他将失败。zeromq不应跨不同线程重用上下文。这同样适用于套接字 如果您设法让worker中的一个线程独占使用套接字,则可以重用 插座

我有一个接受HTTP请求的Flask应用程序。当某些HTTP请求传入时,我希望触发zeromq流上的消息。我希望zeromq流始终保持打开状态。我想知道做这件事的合适方法是什么。由于建议在生产中使用gunicorn和Flask,这是否意味着Flask应用程序将有多个实例,并且如果我将zeromq连接放在与Flask应用程序相同的位置,则其中只有一个可以连接,其他将失败。

zeromq不应跨不同线程重用上下文。这同样适用于套接字

如果您设法让worker中的一个线程独占使用套接字,则可以重用 插座

无论如何,我会从为每个请求创建新的上下文和套接字开始,看看是否有
需要了解共享ZeroMQ连接的复杂性。设置ZeroMQ通常相当快。

应用程序中的ZMQ套接字是
connect()
-ing,还是
bind()
-ing?如果你的应用被认为是客户端并且正在连接,那么多个实例应该能够连接而不会出现问题。如果它被认为是服务器和绑定,那么是的,您将遇到问题。。。但在你的情况下,你应该考虑你的烧瓶应用程序更短暂,因此客户端,而另一端更可靠,因此服务器。 但是,如果没有代码,很难给出任何具体的建议,我只能从您提供的少量信息中直觉地得出这么多。

我使用一个对象来存储zeromq上下文和套接字对象


这样,我可以在线程内重复使用已连接的套接字,同时确保每个线程都有自己的套接字对象。

您能举个例子吗?我可以在
threading.local
中存储数据,但是应该如何使用它?您是否在@Alex中解决了此问题?