我正在尝试使用龙卷风服务器部署我用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
当我检查日志时看到错误
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
来说,所以我猜问题就在这里。
答案 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(例如,在您的开发计算机上)。