在uWSGI后面运行Flask客户端时未收到MQTT消息
我有一个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)] 接收子包 客户端代码如下所示:在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' 接收到的连接
将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,它工作正常