我有一些Flask应用程序,我通过设置FLASK_APP
环境变量并调用flask run
来运行。由于FLASK_DEBUG
也已设置,因此每当我更改某些代码时,应用程序都会方便地重新加载。
但不是所有代码。还有其他文件,即我用app.config.from_pyfile
加载的配置文件,我希望应用程序也可以观看,所以如果我更改它,它会重新加载。我怎么能这样做?
我知道如果我从代码中调用它,我可以在内置的Werkzeug服务器中指定extra_files
。但正如我所提到的,我实际上正在使用内置的flask run
命令。我在这个项目中有多个应用程序,因此可以选择使用FLASK_APP
运行哪个应用程序已经证明很方便...除了这似乎不是指定extra_files
的方法。我可以编写一些同时执行这两种操作的引导代码,但我更喜欢使用某种内置方式(如果存在)。
如果我可以简单地在应用程序本身中指定文件,在加载时将它们添加到监视列表中,那将是特别方便的。遗憾的是,extra_files
似乎并不是App
对象的成员,即使它是app.run()
中的参数。
我无法想象这是一个不常见的用例。 Flask是否提供了我想做的事情?
答案 0 :(得分:1)
我刚刚在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
答案 1 :(得分:0)
您还可以使用FLASK_RUN_EXTRA_FILES
环境变量。
参见https://flask.palletsprojects.com/en/1.1.x/cli/#watch-extra-files-with-the-reloader
答案 2 :(得分:0)
您可以导出这些变量并指定所需的文件。
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"
我已经尝试过了,它正在按预期工作。但这不能保证浏览器会重新加载,因为必须手动刷新浏览器。