You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何部署在Heroku上的Python Telegram机器人运行1分钟后异常停止?

故障根源与修复方案

核心故障点

  • 你当前的Procfile使用web进程类型,这类进程是Heroku专门为对外提供HTTP服务的应用设计的:平台要求web进程必须在启动后60秒内绑定系统分配的$PORT端口提供HTTP响应,否则会直接判定进程异常,回收整个dyno——这完全对应你遇到的“启动运行1分钟就停止”的现象,也解释了为什么你从未触发平台30分钟无请求休眠的规则。
  • 你的机器人代码用的是python-telegram-bot的轮询模式,整个程序没有启动任何HTTP服务、也没有绑定指定端口,根本无法通过Heroku对web进程的健康检查,必然会被平台强制终止。
  • requirements.txt没有固定python-telegram-bot的版本,当前PyPI上的最新版是v20+的全异步架构,和你代码里使用的旧版同步API完全不兼容,就算解决了进程类型问题,代码也可能因为版本不匹配在运行时抛出异常退出。
  • 你观察到的“随机自动触发运行”现象,本质是Heroku免费版的web dyno被回收后,只要有外部请求指向你部署的应用域名(比如随机扫描到该地址的网络请求),平台就会重新拉起dyno。此时机器人进程启动,刚好接收到触发时段的消息,就会呈现出随机响应指令的状态。

修复操作

  • 修改Procfile配置,将web进程替换为适合后台长驻任务的worker进程。worker进程不需要绑定端口,也不会触发60秒无HTTP响应即杀进程的规则,修改后的文件内容为:
    worker: python main.py
    
  • 固定requirements.txt里的依赖版本,匹配你代码使用的同步API,修改后的文件内容为:
    python-telegram-bot==13.15
    
  • 可选优化:在main.py中增加全局异常捕获逻辑,避免未处理的运行时错误导致进程意外退出。

内容的提问来源于stack exchange,提问作者sadtrue

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.30 01:57:03