【问题标题】:flask: code in app factory does not get executed烧瓶:应用程序工厂中的代码未执行
【发布时间】:2018-07-06 20:46:52
【问题描述】:

我正在使用此处所述的标准烧瓶应用程序工厂设置: http://flask.pocoo.org/docs/1.0/tutorial/factory/

flaskr/init.py

import os

from flask import Flask


def create_app(test_config=None):
    # create and configure the app
    app = Flask(__name__, instance_relative_config=True)
    app.config.from_mapping(
        SECRET_KEY='dev',
        DATABASE=os.path.join(app.instance_path, 'flaskr.sqlite'),
    )

    print('Hello World')

   ...

    return app

我运行这个应用程序:

导出 FLASK_APP=flaskr

导出 FLASK_ENV=development

烧瓶运行

都非常标准。但是为什么代码 print("hello world") 从来没有执行过呢?

编辑

重新启动我的开发系统后,问题就消失了。很抱歉我发布了这个。

【问题讨论】:

  • 您在运行应用程序时看到* Serving Flask app "flaskr" .... * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)... 吗?
  • 是的。 Flask 正常启动。但是执行中缺少打印语句。这是奇怪的部分。
  • 如果我明确启动应用程序,例如带有启动文件:app.run() 然后我看到了打印语句。
  • 哦,哦,重启我的开发系统后,问题就消失了。即使使用启动类型flask run,也会执行打印语句
  • 很高兴它现在可以工作,如果错误无法重现,您可以删除帖子

标签: flask


【解决方案1】:

看起来您将文件命名为 init.py 而不是 __init__.py

【讨论】:

  • 我认为这只是一个标记陷阱,__ 用于加粗字体
【解决方案2】:

我猜你使用的是旧版本的烧瓶(1.0) 允许自动检测函数 create_appmake_app (source code) 从 CLI flask 命令启动应用程序。

您可以更新烧瓶包,例如使用 pip

pip install --upgrade Flask

或在__init__ 文件末尾添加以下行以显式方式创建应用程序:

if __name__ == "__main__":
    app = create_app()
    app.run()

【讨论】:

  • “版本”:“==1.0.2”
猜你喜欢
  • 2015-07-04
  • 1970-01-01
  • 2015-02-12
  • 1970-01-01
  • 2019-01-30
  • 2014-08-21
  • 2014-05-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多