Heroku部署Flask版Telegram Bot出现Method Not Allowed报错如何解决
问题根因
你访问的https://git.heroku.com/serene-crag-92322.git是Heroku分配的Git代码仓库地址,仅用于代码推送、拉取操作,不支持普通浏览器的GET访问请求,访问时报Method Not Allowed属于正常现象,不是部署失败。
你代码中配置的https://gentle-temple-77151.herokuapp.com/拼接TOKEN的地址,才是Telegram机器人服务的对外可访问地址。另外你代码里/TOKEN路径仅开放了POST方法,本身就是给Telegram官方服务器推送消息更新用的,用浏览器直接GET访问这个路径同样会返回Method Not Allowed,不属于代码错误。
修复&验证步骤
- 修正启动代码适配Heroku环境:你当前的启动逻辑没有绑定Heroku动态分配的端口,会导致服务启动后无法被外部访问,把入口代码替换为以下内容:
if __name__ == "__main__": import os app.run(host="0.0.0.0", port=int(os.environ.get("PORT", 5000)))
- 检查项目根目录的
Procfile配置:文件不能有后缀名,内容必须指定web启动命令,示例如下(把app.py替换成你实际的Flask启动文件名):
web: python app.py
- 重新执行
git push heroku master完成部署后,用浏览器访问应用根地址https://gentle-temple-77151.herokuapp.com/,这个路由默认支持GET方法,访问后会自动移除旧webhook、绑定新的webhook地址,页面返回!就代表绑定流程执行成功。 - 功能验证:给你的Telegram机器人发送测试消息,能收到正常回复就代表部署完成,不需要手动访问
/TOKEN路径。
报错截图参考

内容的提问来源于stack exchange,提问作者Ali Morakabian
相关产品推荐
相关产品推荐

