在uWSGI后面运行Flask客户端时未收到MQTT消息

在uWSGI后面运行Flask客户端时未收到MQTT消息,flask,mqtt,uwsgi,Flask,Mqtt,Uwsgi,我有一个Flask应用程序,它通过mosquitto代理(v1.6.4)订阅MQTT主题。当直接运行时(使用Flask自己的服务器),客户端连接、订阅和接收消息。当应用程序由uWSGI服务器(V2.0.17)提供服务时,客户端连接、订阅但不接收消息 这两个场景的客户端日志如下所示。只有在第一种情况下才会收到消息 使用Flask自己的服务器运行时: python项目.py 发送连接(u1、p1、wr0、wq0、wf0、c1、k60)客户端\u id=b'full-client-54' 接收到的连接

我有一个Flask应用程序,它通过mosquitto代理(v1.6.4)订阅MQTT主题。当直接运行时(使用Flask自己的服务器),客户端连接、订阅和接收消息。当应用程序由uWSGI服务器(V2.0.17)提供服务时,客户端连接、订阅但不接收消息

这两个场景的客户端日志如下所示。只有在第一种情况下才会收到消息

使用Flask自己的服务器运行时:

python项目.py

发送连接(u1、p1、wr0、wq0、wf0、c1、k60)客户端\u id=b'full-client-54'

接收到的连接(0,0)

发送订阅(d0,m1)[(b'/topics/drone/battery',0)]

接收子包

已收到发布(d0、q0、r0、m0)、“/topics/drone/battery”、。。。(76字节)

使用uWSGI运行时:

uwsgi--socket 0.0.0.0:8080--protocol=http-w项目:app-H env--workers 1

发送连接(u1、p1、wr0、wq0、wf0、c1、k60)客户端\u id=b'full-client-54'

接收到的连接(0,0)

发送订阅(d0,m1)[(b'/topics/drone/battery',0)]

接收子包

客户端代码如下所示:

将paho.mqtt.client作为mqtt导入
进口烧瓶
导入json
app=烧瓶。烧瓶(\uuuuu名称\uuuuuuu)
连接上的def(客户端、用户数据、标志、rc):
client.subscribe(电池主题)
def on_消息(客户端、用户数据、消息):
data=json.loads(msg.payload)
#自定义代码
日志上的def(客户端、用户数据、级别、buf):
打印(buf)
client=mqtt.client('full-client-54')
client.on\u connect=on\u connect
client.on_message=on_message
client.username\u pw\u set(username=USER\u NAME,password=PWD)
client.on_log=on_log
尝试:
client.connect(BROKER\u IP)
client.loop_start()
除例外情况外:
打印('连接到mqtt代理时出现异常')
有人知道为什么在使用此设置时,当uWSGI为MQTT客户机提供服务时无法正确接收消息吗?

您也一样。 解决方案是将uwsgi更改为gunicorn,它工作正常