在代码或```flask Run''命令中指定烧瓶重新加载观察列表(Extra_files)



我有一些通过设置FLASK_APP环境变量并调用flask run来运行的烧瓶应用程序。由于还设置了FLASK_DEBUG,因此每当我更改某些代码时,应用程序会方便地重新加载。

,但不是全部代码。还有其他文件,即我使用app.config.from_pyfile加载的配置文件,我也希望该应用程序观看,因此,如果我更改这些文件,它也会重新加载。我该怎么做?

我知道,如果我从代码调用它,我可以在内置的Werkzeug服务器中指定extra_files。但是正如我提到的,实际上我正在使用内置的flask run命令。我在此项目中有多个应用程序,因此能够选择使用FLASK_APP运行的一个应用程序已证明方便...除了似乎没有一种指定extra_files的方法。我可以写一些两者都可以做的bootstrap代码,但是如果存在,我宁愿使用某种内置的方式。

特别方便的是,如果我可以简单地指定应用程序本身中的文件,然后在加载它们时将其添加到手表列表中。可悲的是,extra_files似乎不是App对象的成员,即使它是app.run()中的参数。

我无法想象这是一种罕见的用例。烧瓶是否提供了做我想做的方法?

我刚刚尝试了manage.py中的以下命令:

@manager.option('-w', '--wsgi_server', dest='server', default='flask',
            help='[flask|gevent|tornado]')
@manager.option('-p', '--port', dest='port', default=5000,
            help='Port to listen')
@manager.option('-d', '--debug', dest='debug', action="store_true", default=False,
            help='Show debugging information')
def run(server, port, debug):
    app.connexion_app.run(
        port=int(port),
        server=server,
        debug=debug,
        extra_files=[
            './proj/oauth2/swagger.yaml',
            './proj/api/swagger.yaml',
        ])

extra_files似乎被拾取了:

 * Debugger is active!
 * Debugger PIN: 336-632-033
 * Detected change in '<-snip->/proj/api/swagger.yaml', reloading

您可以导出这些变量并指定您需要的文件。

FLASK_APP=/usr/src/app/server.py
# to enable debug to enable reload on file change
FLASK_DEBUG=1
# here specify the file
FLASK_RUN_EXTRA_FILES="/usr/src/app/banuka.txt"

我已经尝试过,它正在按预期工作。但这不能保证浏览器会重新加载,据说您必须手动进行浏览器刷新。

您也可以使用FLASK_RUN_EXTRA_FILES环境变量。请参阅https://flask.palletsprojects.com/en/1.1.x/cli/#watch-extra-files-with-with-the-reloader

需要设置debug = true。不适合生产环境。

最新更新