Heroku上的gunicorn + Flask,模块名称和应用名称不正确

时间:2018-09-27 19:06:01

标签: python heroku flask gunicorn

我正在尝试在Heroku上运行Flask应用程序(使用Nginx + Gunicorn)。我的Heroku procfile是:

web: bin/start-nginx gunicorn -c config/gunicorn.py myflaskmodule:app

我不断从Gunicorn中获取错误,例如:

gunicorn.errors.HaltServer: <HaltServer 'App failed to load.' 4>

或者,根据我尝试过的应用名称,“ gunicorn”错误可能是:

Application object must be callable.

Flask应用程序设置在名为myflaskmodule的目录中,该目录包含一个static目录,templates目录,auth.pydb.py,{{1 }}和btac.py

__init__.py中,蓝图定义为:

btac.py

然后我在 bp = Blueprint('btac', __name__, url_prefix='/btac') 中定义了几个flask函数,例如:

btac.py

@bp.route('/', methods=['GET']) def index(): # Do some things... return render_template() 中,我有一个功能:

__init.py__

在终端(或bash脚本)中,执行def create_app(test_config=None): app = Flask(__name__, instance_relative_config=True) # lots of other unrelated content here... db.init_app(app) app.register_blueprint(auth.bp) app.register_blueprint(btac.bp) return app export FLASK_ENV=development之后,Flask应用程序将以export FLASK_APP=myflaskmodule在本地运行。

如何在Heroku procfile中定义最后一个参数?它应该是flask run。我已经尝试过module_name:app_namemyflaskmodule:appmyflaskmodule:myflaskmodulemyflaskmodule:bp

我非常有信心参数的第一部分应该是myflaskmodule:btac(Flask主目录的名称),但是我似乎无法正确定义Flask应用程序的名称。

烧瓶== 1.0.2,古尼康角== 19.9.0

1 个答案:

答案 0 :(得分:2)

如果您将web: gunicorn "myflaskmodule:create_app()"放入Procfile中,那应该可以工作。在上面的代码中,您没有与myflaskmodule:app一起使用的应用程序变量,但是您确实有一个返回Flask应用程序的函数,因此您可以使用它。