我有一些通过设置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。不适合生产环境。