如何在不使用 Flask 的情况下将 Python 应用程序绑定到 Heroku 上的端口?
How can I bind a Python app to a port on Heroku without using Flask?
我正在尝试 运行 heroku 上的一个简单应用程序。它根本不使用 Flask,脚本只需要 运行 一次,它就会(或应该)让自己保持活力。在本地 运行 没问题,在我的 VPS 上 运行 没问题。不过,我真的很想将它部署到 heroku 以方便 maintenance/addons。所以我部署了它,确保所有依赖项都已安装,等等
这是我的 Procfile:
web: newrelic-admin run-program python dragon.py
但是当我尝试 运行 它时,它会 运行 好几秒钟后才会出现此错误:
heroku/web.1: Error R10 (Boot timeout) -> Web process failed to bind to $PORT within 60 seconds of launch
在那几秒钟内,它甚至会响应命令(它是一个聊天机器人),但不可避免地会因绑定失败错误而失败。我尝试了几种解决方案,例如将 $PORT
添加到我的 procfile,其中 none 有效。我尝试使用 gunicorn
,应用会 运行,但它不会接收或响应传入的命令。
我不知所措,有谁知道为 Python 应用而非 运行ning Flask 绑定端口的可靠方法吗?对于任何未以某种方式使用 Flask 的问题,我找不到任何答案,但添加 Flask 似乎也不起作用。我只需要此应用程序 运行 as-is,但绑定到一个端口以使其保持打开状态。
这是我的日志的屏幕截图,显示了 request/response headers,甚至是应用程序在崩溃前发送的第一个保持活动信号。
http://puu.sh/h3Jo2/e689e9ba38.png
第一次编辑:我联系了 Heroku 支持,将我的启动超时增加到 120 秒。它仍然无法绑定到 $PORT,尽管 运行 正在运行直到它崩溃。我还尝试在配置变量中指定一个端口,但无济于事。这是我的日志的屏幕截图,显示 120 秒后无法启动(两次):http://puu.sh/h4e4r/11c50a5ae7.png
好的,我明白了。我再次联系支持人员,发现我使用了错误的流程类型。我现在 运行 将它作为一个 bot
进程,所以我的 Procfile 现在看起来像这样:
bot: newrelic-admin run-program python dragon.py
这允许它 运行 无需绑定到端口。
我正在尝试 运行 heroku 上的一个简单应用程序。它根本不使用 Flask,脚本只需要 运行 一次,它就会(或应该)让自己保持活力。在本地 运行 没问题,在我的 VPS 上 运行 没问题。不过,我真的很想将它部署到 heroku 以方便 maintenance/addons。所以我部署了它,确保所有依赖项都已安装,等等
这是我的 Procfile:
web: newrelic-admin run-program python dragon.py
但是当我尝试 运行 它时,它会 运行 好几秒钟后才会出现此错误:
heroku/web.1: Error R10 (Boot timeout) -> Web process failed to bind to $PORT within 60 seconds of launch
在那几秒钟内,它甚至会响应命令(它是一个聊天机器人),但不可避免地会因绑定失败错误而失败。我尝试了几种解决方案,例如将 $PORT
添加到我的 procfile,其中 none 有效。我尝试使用 gunicorn
,应用会 运行,但它不会接收或响应传入的命令。
我不知所措,有谁知道为 Python 应用而非 运行ning Flask 绑定端口的可靠方法吗?对于任何未以某种方式使用 Flask 的问题,我找不到任何答案,但添加 Flask 似乎也不起作用。我只需要此应用程序 运行 as-is,但绑定到一个端口以使其保持打开状态。
这是我的日志的屏幕截图,显示了 request/response headers,甚至是应用程序在崩溃前发送的第一个保持活动信号。
http://puu.sh/h3Jo2/e689e9ba38.png
第一次编辑:我联系了 Heroku 支持,将我的启动超时增加到 120 秒。它仍然无法绑定到 $PORT,尽管 运行 正在运行直到它崩溃。我还尝试在配置变量中指定一个端口,但无济于事。这是我的日志的屏幕截图,显示 120 秒后无法启动(两次):http://puu.sh/h4e4r/11c50a5ae7.png
好的,我明白了。我再次联系支持人员,发现我使用了错误的流程类型。我现在 运行 将它作为一个 bot
进程,所以我的 Procfile 现在看起来像这样:
bot: newrelic-admin run-program python dragon.py
这允许它 运行 无需绑定到端口。