【问题标题】:Heroku Flask App: Where to place wsgi.py?Heroku Flask 应用程序:将 wsgi.py 放在哪里?
【发布时间】:2020-09-09 09:16:11
【问题描述】:

尝试遵循在 Heroku 中运行的 Flask 应用程序的最佳实践,因此我将事情从 app.py 转移到使用蓝图。

当前目录结构如下:

--root
  --application
    --admin_blueprint
    --another_blueprint
    --wsgi.py (app = create_app())
    --__init__.py (this has def create_app, which handles creating my app)
  --migration
  --Procfile
  --requirements.txt
  --runtime.txt
  --config.py
  --manage.py

这是 init.py

from flask import Flask

...

def create_app():
    app = Flask(...)
...
    return app

这是 wsgi.py

from application import create_app

app = create_app()

if __name__ == '__main__':
    app.run(host='0.0.0.0')

我一生都无法弄清楚如何正确地执行 Procfile,这是我之前在我的根目录中有 app.py 和 wsgi.py 并且它在 Heroku 上运行良好时所拥有的:

web: gunicorn app:wsgi

我已经尝试了其中的一些:

web: gunicorn application:wsgi
web: gunicorn application.wsgi
web: gunicorn --pythonpath application application:wsgi
web: gunicorn application.wsgi.py
web: gunicorn "application.wsgi.py"
web: gunicorn "application/wsgi.py"

flask run 有效,因为我已经导出了FLASK_APP=application.wsgi.py

谢谢。

【问题讨论】:

  • 你能试试web: gunicorn application.wsgi --log-file -吗?

标签: python flask heroku procfile


【解决方案1】:

使用application.wsgi:app

application.wsgi(冒号前的部分)指示gunicorn如何解析模块。

app(冒号后面的部分)给出了解析模块中声明的 WSGI 应用程序的名称。

:app 可以省略,gunicorn 默认在模块中查找名称为 application 的 WSGI 应用程序。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-07
    • 1970-01-01
    相关资源
    最近更新 更多