Python 什么';生产中使用zeromq烧瓶的合适方法是什么?
我有一个接受HTTP请求的Flask应用程序。当某些HTTP请求传入时,我希望触发zeromq流上的消息。我希望zeromq流始终保持打开状态。我想知道做这件事的合适方法是什么。由于建议在生产中使用gunicorn和Flask,这是否意味着Flask应用程序将有多个实例,并且如果我将zeromq连接放在与Flask应用程序相同的位置,则其中只有一个可以连接,其他将失败。zeromq不应跨不同线程重用上下文。这同样适用于套接字 如果您设法让worker中的一个线程独占使用套接字,则可以重用 插座 无论如何,我会从为每个请求创建新的上下文和套接字开始,看看是否有Python 什么';生产中使用zeromq烧瓶的合适方法是什么?,python,flask,zeromq,Python,Flask,Zeromq,我有一个接受HTTP请求的Flask应用程序。当某些HTTP请求传入时,我希望触发zeromq流上的消息。我希望zeromq流始终保持打开状态。我想知道做这件事的合适方法是什么。由于建议在生产中使用gunicorn和Flask,这是否意味着Flask应用程序将有多个实例,并且如果我将zeromq连接放在与Flask应用程序相同的位置,则其中只有一个可以连接,其他将失败。zeromq不应跨不同线程重用上下文。这同样适用于套接字 如果您设法让worker中的一个线程独占使用套接字,则可以重用 插座
需要了解共享ZeroMQ连接的复杂性。设置ZeroMQ通常相当快。应用程序中的ZMQ套接字是
connect()
-ing,还是bind()
-ing?如果你的应用被认为是客户端并且正在连接,那么多个实例应该能够连接而不会出现问题。如果它被认为是服务器和绑定,那么是的,您将遇到问题。。。但在你的情况下,你应该考虑你的烧瓶应用程序更短暂,因此客户端,而另一端更可靠,因此服务器。
但是,如果没有代码,很难给出任何具体的建议,我只能从您提供的少量信息中直觉地得出这么多。我使用一个对象来存储zeromq上下文和套接字对象
这样,我可以在线程内重复使用已连接的套接字,同时确保每个线程都有自己的套接字对象。您能举个例子吗?我可以在
threading.local
中存储数据,但是应该如何使用它?您是否在@Alex中解决了此问题?