7

上下文: 我正在编写一个中等大小的 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)

因此,我假设我可以简单地runappProcfile 中替换,但是在执行时foreman start,gunicorn 会失败,并会出现关于模块的毫无意义的冗长语句。

4

1 回答 1

10

我在Django 的文档中找到了解决方案。gunicorn的主要参数是module:

gunicorn [OPTIONS] APP_MODULE

APP_MODULE图案在哪里MODULE_NAME:VARIABLE_NAME

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

于 2012-05-20T17:53:21.840 回答