语境:我正在编写一个中型 Flask 应用程序(10-15 个视图),在此过程中,我希望以一种易于维护和扩展的方式组织代码(不像大多数 Flask 应用程序那样是一个整体文件)。

应用程序的结构模仿 文档 如下:

/AwesomeHackings
    /ENV
    /AwesomeHackings
        /models
        /static
        /templates
        /__init__.py
        /awesome.py
        /awesome.cfg
    /Procfile
    /README.MD
    /requirements.txt
    /run.py

问题:我无法让工头使用未命名为“app”的烧瓶应用程序。我希望 run.py 作为我的应用程序的入口点。

我正在使用gunicorn + gevent,我当前的Procfile包含:

web: gunicorn -w 2 -b 0.0.0.0:$PORT -k gevent app:run

我一直在使用 run.py 测试应用程序:

from AwesomeHackings import awesome
awesome.app.run(debug=True)

因此我认为我可以简单地替换 run 为了 app 在Procfile中,但是执行时 foreman start ,gunicorn 因有关模块的毫无意义的废话而失败。

有帮助吗?

解决方案

我找到了解决方案 Django 的文档. 。Gunicorn模块主要参数:

gunicorn [OPTIONS] APP_MODULE

在哪里 APP_MODULE 是模式的 MODULE_NAME:VARIABLE_NAME

虽然语法作为关键字参数 app:someIdentifier 似乎是合乎逻辑的,因为所有教程都使用名为的模块 app, ,事实上并非如此。我的情况的正确论点是 run:app.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top