部署Python 3应用程序Heroku:崩溃



我完成了一个项目(第8周CS50),想把它放到网上。它在Cloud9IDE和本地化的web服务器中运行良好。它是"application.py",使用Flask(由CS50为我配置)。

因此,我阅读了部署方面的内容,并多次尝试在Heroku上进行部署。无法使其工作。

错误日志:

  • 2017-02-13T04:8:13.132359+00:00 heroku〔web.1〕:状态从启动时崩溃
  • 2017-02-13T04:48:7.100053+00:00 heroku[web.1]:使用命令python application.py启动进程
  • 2017-02-13T04:48:20.884225+00:0 heroku[web.1]:进程退出状态0
  • 2017-02-13T04:18:20.902452+000:00 heroku[web.1]:状态从启动更改为崩溃
  • 2017-02-13T04:17:31.197394+00:00heroku[路由器]:at=错误代码=H10 desc="应用程序崩溃"方法=GETpath="/"host=goldsteinsentiments.herokuapp.comrequest_id=e917b69b-7636-40c9-9547-a2df2aaa1f3d fwd="50.39.98.15"dyno=连接=服务=状态=503字节=
  • 2017-02-13T04:17:31.307356+000:00 heroku[路由器]:at=错误代码=H10desc="应用程序崩溃"method=GET path="/favicon.ico"host=goldsteinsentiments.herokuapp.comrequest_id=096751c7-5c0-4ba2-8705-6bf61578d516 fwd="50.39.98.15"dyno=连接=服务=状态=503字节=

Procfile(从stackoverflow复制一个):"web:python application.py">

主要应用程序.py:https://github.com/jamesdylangoldstein/sentiments/blob/master/application.py

所有文件:https://github.com/jamesdylangoldstein/sentiments

部署步骤:

1) Procfile包含:web: gunicorn application:app

2) 在requirements.txt中键入:gunicorn

根据你在GitHub上发布的代码,我建议做一些更改来克服这个错误:

  1. 在python程序的末尾添加以下内容:

    if __name__ == "__main__":
    app.run()
    

    请确保该应用程序已定义(在您的情况下似乎是这样),并且您没有在.run()方法中指定port参数。如果您提前定义端口号,Heroku将崩溃。

  2. 确保所有依赖项都在requirements.txt中指定。确保您的Procfile和需求按照@James Goldstein的定义正确陈述。

  3. 一些web服务器(如Azure)要求python应用程序默认命名为app.py。我不知道Heroku是否是这样,但对于一些服务器来说,这可能是一个问题。

如果您使用"create_app"工厂,因此您的Procfile shuld包含:

web: gunicorn -w 4 "my_project:create_app()"