python-3.x - 如何在不使用 Flask 的情况下将 Python 应用程序绑定(bind)到 Heroku 上的端口?

标签 python-3.x heroku timeout cloud port

我正在尝试在 heroku 上运行一个简单的应用程序。它根本不使用 Flask,脚本只需要运行一次,它就会(或应该)让自己保持活力。它在本地运行良好,在我的 VPS 上运行良好。我真的很想将它部署到heroku,以便于维护/插件。所以我部署了它,确保安装了所有依赖项,等等。

这是我的 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 

在那几秒钟内,它甚至会响应命令(它是一个聊天机器人),但不可避免地会因绑定(bind)失败错误而失败。我尝试了几种解决方案,例如添加 $PORT到我的procfile,但没有一个工作。我尝试使用 gunicorn并且应用程序会运行,但它不会接收或响应传入的命令。

我不知所措,有没有人知道为不运行 Flask 的 Python 应用程序绑定(bind)端口的可靠方法?对于没有以某种方式使用 Flask 的任何事情,我都找不到任何答案,但添加 Flask 似乎也不起作用。我只需要这个应用程序按原样运行,但绑定(bind)到一个端口,以便它保持打开状态。

这是我的日志截图,显示了请求/响应 header ,甚至是应用程序在崩溃之前发送的第一个保活信号。

http://puu.sh/h3Jo2/e689e9ba38.png

第一次编辑:我联系了 Heroku 支持,让我的启动超时增加到 120 秒。尽管运行和工作直到崩溃,它仍然无法绑定(bind)到 $PORT。我还尝试在配置变量中指定一个端口,但无济于事。这是我的日志截图,显示 120 秒后无法启动(两次):http://puu.sh/h4e4r/11c50a5ae7.png

最佳答案

好吧,我想通了。我再次联系支持人员,发现我使用了错误的流程类型。我现在将它作为 bot 运行过程,所以我的 Procfile 现在看起来像这样:
bot: newrelic-admin run-program python dragon.py
这允许它在不绑定(bind)到端口的情况下运行。

关于python-3.x - 如何在不使用 Flask 的情况下将 Python 应用程序绑定(bind)到 Heroku 上的端口?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29475733/

相关文章:

python - 在 python 中使用 scipy 截断正态分布

postgresql - Heroku 上的 Postgres 和转储单表转储文件

Heroku 代码=H10 desc ="App crashed"- 不知道它为什么崩溃

ruby-on-rails-3 - "uninitialized constant Users (NameError)"w/Heroku 部署

python - 如何判断imaplib2空闲响应是否是超时造成的

linux - epoll_wait 阻塞时间超过超时

perl - perl 上的 coreutils 超时模拟

python - Django:电子商务的产品变体

python-3.x - VSCode 终端使用了错误的 python 版本

python - csv.reader 从请求流 : iterator should return strings, 中读取而不是字节