Heroku上的龙卷风服务器。错误R10(启动超时)

时间:2018-08-08 03:36:02

标签: python heroku deployment procfile

我正在尝试使用龙卷风服务器部署我用Python编写的Web应用程序。

在我的app.py中,

if __name__ == '__main__':
    server = tornado.httpserver.HTTPServer(Application())
    server.listen(4200, address='0.0.0.0')
    tornado.ioloop.IOLoop.instance().start()

然后我有了一个包含web: python app.py

的Procfile

当我检查日志时看到错误

2018-08-08T02:20:54.117821+00:00 heroku[web.1]: Starting process with command `python app.py`
2018-08-08T02:20:57.000000+00:00 app[api]: Build succeeded
2018-08-08T02:21:54.891301+00:00 heroku[web.1]: Error R10 (Boot timeout) -> Web process failed to bind to $PORT within 60 seconds of launch
2018-08-08T02:21:54.891301+00:00 heroku[web.1]: Stopping process with SIGKILL
2018-08-08T02:21:55.027586+00:00 heroku[web.1]: Process exited with status 137
2018-08-08T02:21:55.049407+00:00 heroku[web.1]: State changed from starting to crashed
2018-08-08T02:21:55.051776+00:00 heroku[web.1]: State changed from crashed to starting
2018-08-08T02:21:59.562357+00:00 heroku[web.1]: Starting process with command `python app.py`

我不知道我在做什么,尤其是对于Procfile来说,所以我猜问题就在这里。

1 个答案:

答案 0 :(得分:1)

Heroku tells you which port you should bind to via the PORT environment variable。您应该使用它而不是对端口进行硬编码,例如

import os

port = int(os.getenv('PORT', 4200))
server.listen(port, address='0.0.0.0')

这将使用PORT环境变量(如果存在)(例如在Heroku中),如果没有则退回到4200(例如,在您的开发计算机上)。