如何在Heroku部署Rust编写的Telegram疫苗查询机器人,解决H14报错问题
问题核心原因及解决方法
1. H14报错不影响你的机器人运行
你看到的H14 No web processes running报错是你主动访问应用HTTP地址触发的,你本身不需要提供web服务,这个报错属于正常现象,完全不影响后台机器人的运行,不需要处理这个报错。
2. 你当前的Procfile配置完全错误,这是机器人无法正常运行的核心原因
你的Procfile存在两个核心问题:
- 所有命令都绑定了
release类型:release是部署阶段一次性执行的临时命令,执行完成后进程就会退出,不会作为常驻后台进程运行,你把启动机器人的cargo run写在release下,只会在部署时跑一次就自动停止,不可能持续提供服务。 - 环境变量不该写在Procfile中:Heroku提供了专门的环境变量配置入口,你可以直接在应用控制台的「Settings」-「Config Vars」板块添加
TELOXIDE_TOKEN、CHANNEL_ID、OWNER_ID三个变量的对应值即可,不需要在Procfile中声明export命令。
修改后的Procfile只需要保留一行即可:
worker: cargo run
worker是Heroku为不需要接收外部HTTP请求的常驻后台服务提供的进程类型,完全适配你的Telegram机器人场景。
3. 手动开启worker进程
修改Procfile重新部署后,默认Heroku不会自动启动worker进程,你需要做以下任意一个操作开启:
- 在应用控制台的「Resources」页面找到worker进程项,将右侧的开关调整为开启状态
- 如果你安装了Heroku CLI,可以直接执行命令
heroku ps:scale worker=1
额外注意
如果你的Telegram机器人使用的是WebHook模式而非长轮询模式,那才需要配置web类型进程接收Telegram的回调请求,如果是长轮询模式用worker进程即可正常运行。
内容的提问来源于stack exchange,提问作者hawexrutile
相关产品推荐
相关产品推荐

