Procfile gunicorn自定义模块名称

时间:2012-05-20 05:15:00

标签: heroku flask gunicorn foreman

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

应用程序的结构模仿documentation,如下所示:

/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)

因此我假设我可以在Procfile中简单地用run代替app,但是当执行foreman start时,gunicorn会因模块无效而无效。

1 个答案:

答案 0 :(得分:10)

我在Django's documentation找到了解决方案。 gunicorn的主要参数是模块:

gunicorn [OPTIONS] APP_MODULE

其中APP_MODULE的格式为MODULE_NAME:VARIABLE_NAME

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