在Heroku上托管python电报机器人在几秒钟后总是发生冲突

在Heroku上托管python电报机器人在几秒钟后总是发生冲突,python,python-3.x,heroku,bots,python-telegram-bot,Python,Python 3.x,Heroku,Bots,Python Telegram Bot,我使用设置了一个电报机器人,我想在Heroku上托管它。问题是服务器代码总是错误,声称有另一个bot实例正在运行(没有) 我创建了一个Procfile,如下所示: web: python main.py 并确保requirements.txt是最新的 main.py: #。。。处理程序。。。 updater=updater(token=os.environ['token'],使用_context=True) dispatcher=updater.dispatcher logging.basic

我使用设置了一个电报机器人,我想在Heroku上托管它。问题是服务器代码总是错误,声称有另一个bot实例正在运行(没有)

我创建了一个
Procfile
,如下所示:

web: python main.py
并确保
requirements.txt
是最新的

main.py:

#。。。处理程序。。。
updater=updater(token=os.environ['token'],使用_context=True)
dispatcher=updater.dispatcher
logging.basicConfig(格式='(asctime)s%(名称)s-%(levelname)s-%(消息)s',
级别=logging.INFO)
dispatcher.add_处理程序(CommandHandler('help',help))
打印('已启动Bot.正在侦听消息…')
updater.start_polling()
updater.idle()
以下是错误日志:

2020-04-24T16:20:34.096562+00:00 app[web.1]: 2020-04-24 16:20:34,095  telegram.ext.dispatcher - ERROR - No error handlers are registered, logging exception.

2020-04-24T16:20:34.096564+00:00 app[web.1]: Traceback (most recent call last):
2020-04-24T16:20:34.096564+00:00 app[web.1]:   File "/app/.heroku/python/lib/python3.6/site-packages/telegram/ext/updater.py", line 380, in _network_loop_retry
2020-04-24T16:20:34.096565+00:00 app[web.1]:     if not action_cb():
2020-04-24T16:20:34.096565+00:00 app[web.1]:   File "/app/.heroku/python/lib/python3.6/site-packages/telegram/ext/updater.py", line 341, in polling_action_cb
2020-04-24T16:20:34.096609+00:00 app[web.1]:     allowed_updates=allowed_updates)
2020-04-24T16:20:34.096610+00:00 app[web.1]:   File "<decorator-gen-31>", line 2, in get_updates
2020-04-24T16:20:34.096610+00:00 app[web.1]:   File "/app/.heroku/python/lib/python3.6/site-packages/telegram/bot.py", line 70, in decorator
2020-04-24T16:20:34.096611+00:00 app[web.1]:     result = func(*args, **kwargs)
2020-04-24T16:20:34.096611+00:00 app[web.1]:   File "/app/.heroku/python/lib/python3.6/site-packages/telegram/bot.py", line 2136, in get_updates
2020-04-24T16:20:34.096612+00:00 app[web.1]:     result = self._request.post(url, data, timeout=float(read_latency) + float(timeout))
2020-04-24T16:20:34.096612+00:00 app[web.1]:   File "/app/.heroku/python/lib/python3.6/site-packages/telegram/utils/request.py", line 334, in post
2020-04-24T16:20:34.096612+00:00 app[web.1]:     **urlopen_kwargs)
2020-04-24T16:20:34.096613+00:00 app[web.1]:   File "/app/.heroku/python/lib/python3.6/site-packages/telegram/utils/request.py", line 249, in _request_wrapper
2020-04-24T16:20:34.096613+00:00 app[web.1]:     raise Conflict(message)
2020-04-24T16:20:34.096946+00:00 app[web.1]: telegram.error.Conflict: Conflict: terminated by other getUpdates request; make sure that only one bot instance is running
2020-04-24T16:20:34.523514+00:00 heroku[web.1]: State changed from starting to crashed
2020-04-24T16:20:34.096562+00:00应用程序[web.1]:2020-04-24 16:20:34095 telegram.ext.dispatcher-错误-未注册错误处理程序,记录异常。
2020-04-24T16:20:34.096564+00:00应用程序[web.1]:回溯(最近一次通话):
2020-04-24T16:20:34.096564+00:00应用程序[web.1]:文件“/app/.heroku/python/lib/python3.6/site packages/telegrame/ext/updater.py”,第380行,在网络循环中
2020-04-24T16:20:34.096565+00:00应用程序[web.1]:如果不采取行动,则:
2020-04-24T16:20:34.096565+00:00应用程序[web.1]:文件“/app/.heroku/python/lib/python3.6/site packages/telegrame/ext/updater.py”,第341行,在轮询操作中
2020-04-24T16:20:34.096609+00:00应用程序[web.1]:允许的更新=允许的更新)
2020-04-24T16:20:34.096610+00:00应用程序[web.1]:文件“”,第2行,在获取更新中
2020-04-24T16:20:34.096610+00:00应用程序[web.1]:文件“/app/.heroku/python/lib/python3.6/site packages/telegrame/bot.py”,第70行,在decorator中
2020-04-24T16:20:34.096611+00:00应用程序[web.1]:结果=func(*args,**kwargs)
2020-04-24T16:20:34.096611+00:00应用程序[web.1]:文件“/app/.heroku/python/lib/python3.6/site packages/telegrame/bot.py”,第2136行,在get_updates中
2020-04-24T16:20:34.096612+00:00应用程序[web.1]:结果=self.\u请求.post(url,数据,超时=float(读取延迟)+float(超时))
2020-04-24T16:20:34.096612+00:00应用程序[web.1]:文件“/app/.heroku/python/lib/python3.6/site packages/telegrame/utils/request.py”,第334行,在post中
2020-04-24T16:20:34.096612+00:00应用程序[web.1]:**urlopen_kwargs)
2020-04-24T16:20:34.096613+00:00应用程序[web.1]:文件“/app/.heroku/python/lib/python3.6/site packages/telegrame/utils/request.py”,第249行,在请求包装中
2020-04-24T16:20:34.096613+00:00应用程序[web.1]:引发冲突(消息)
2020-04-24T16:20:34.096946+00:00应用程序[web.1]:telegrame.error.Conflict:Conflict:被其他GetUpdate请求终止;确保只有一个bot实例正在运行
2020-04-24T16:20:34.523514+00:00 heroku[web.1]:状态从开始更改为崩溃
我确保停止任何其他正在运行的
main.py

那么,如何在Heroku上正确地托管bot实例呢?

尝试使用“web”-“worker”。 这是我在heroku上的机器人的一个解决方案。

尝试使用“web”-“worker”。
这是我在heroku上的bot的一个解决方案。

我有另一个解决方案,那就是使用webhooks:但是当bot实例在heroku中处于活动状态,并且有人使用
更新程序启动本地服务器。start_polling
,heroku上的bot实例将停止侦听,直到另一个重新部署。我仍然在寻找我原来问题的答案。我有一个替代解决方案,就是使用webhooks:但是当bot实例在heroku中处于活动状态,并且有人使用
更新程序启动本地服务器。start_polling
,heroku的bot实例将停止侦听,直到另一个重新部署。我仍然在寻找我最初问题的答案。