【发布时间】:2021-07-28 11:25:55
【问题描述】:
我们将 gunicorn 与 django 和 django-telegrambot 一起使用。我们在自己的应用程序中也有一个 MQTT 客户端。当一些 MQTT 消息到达时,我们发送 Telegram 消息,反之亦然。现在的问题是,当我们将 gunicorn 与多个 worker 一起使用时,我们有多个 MQTT 客户端,因此当 MQTT 消息到达时,我们将多次发送相同的 Telegram 消息。
当我们使用 gunicorns 预加载 worker 时,我们只有一个 MQTT 客户端,但是所有进程共享相同的 Telegram TCP 连接,我们会收到有线 SSL 错误。作为替代方案,我们可以仅在进程和多个线程上使用,但有时 MQTT 和 Telegram 消息不会被处理(idk 为什么)。
有没有办法让它运行?
可以使用 botpolling,而不是使用 webhook,但是 django-telegrambot 说:
管理命令轮询模式(一种在本地机器上运行机器人的简单方法,不推荐在生产环境中使用!)
【问题讨论】:
-
嗨。请删除
python-telegram-bot标签,这是用于同名库的;) -
该库在 django-telegrambot 内部使用。也许您可以回答为什么不应该在生产中使用轮询的问题?我目前认为这是我问题的唯一答案,因为我只有一个进程在执行 mqtt 和电报。