Paho 发布在 Docker 上的第一个主题后停止
Paho publishing stops after first topic on Docker
我的代码在特定时间发布到主题列表。我 运行 在本地进行此操作,但它有时不会做出应有的反应。一旦我对它进行 docker 化,它只会发布到第一个主题。任何帮助将不胜感激
def connector():
port = 1833
msg = {'state': "off"}
client1 = paho.Client("shutdown_client")
client1.on_publish = on_publish
client1.connect(brok, port=1883)
sleep(5)
print("connected")
for topic in sub:
ret = client1.publish(topic, orjson.dumps(msg))
def on_publish(client, userdata, result):
print("shutting down office:", result)
pass
def main():
scheduler = BackgroundScheduler()
scheduler.start()
print(scheduler)
trigger = CronTrigger(
year="*", month="*", day="*", hour="*", minute="*", second="00"
, timezone='Europe/Amsterdam')
scheduler.add_job(
connector,
trigger=trigger,
name="daily shutdown",
)
while True:
sleep(5)
if __name__ == "__main__":
main()
您还没有启动 Paho 的客户端 network loop,没有它不会发送大于网络 MTU 的消息。
您似乎也从不关闭客户端,因此每次运行时都会泄漏客户端。
我的代码在特定时间发布到主题列表。我 运行 在本地进行此操作,但它有时不会做出应有的反应。一旦我对它进行 docker 化,它只会发布到第一个主题。任何帮助将不胜感激
def connector():
port = 1833
msg = {'state': "off"}
client1 = paho.Client("shutdown_client")
client1.on_publish = on_publish
client1.connect(brok, port=1883)
sleep(5)
print("connected")
for topic in sub:
ret = client1.publish(topic, orjson.dumps(msg))
def on_publish(client, userdata, result):
print("shutting down office:", result)
pass
def main():
scheduler = BackgroundScheduler()
scheduler.start()
print(scheduler)
trigger = CronTrigger(
year="*", month="*", day="*", hour="*", minute="*", second="00"
, timezone='Europe/Amsterdam')
scheduler.add_job(
connector,
trigger=trigger,
name="daily shutdown",
)
while True:
sleep(5)
if __name__ == "__main__":
main()
您还没有启动 Paho 的客户端 network loop,没有它不会发送大于网络 MTU 的消息。
您似乎也从不关闭客户端,因此每次运行时都会泄漏客户端。