我有一个使用Flask建立的网站(在flask mega tutorial之后)。
我开发时编辑了views.py
。在同一目录中,我有一个temp.py
,它是以编程方式编辑的。
现在我将服务器设置为DEBUG,以便每次编辑views.py
时,服务器都会重新启动。我的问题是,每次我的程序编辑temp.py
时,服务器也会重新启动,这会导致许多事情中断。
我有什么办法让烧瓶忽略temp.py
而只在决定重新启动时只看views.py
?
答案 0 :(得分:2)
禁止Flask服务器在调试模式下重新启动所有源文件更改
Flask将使用通用错误页面禁止任何服务器错误,除非 它处于调试模式。因此,只启用交互式调试器 如果没有重新加载代码,则必须使用
run()
调用debug=True
和use_reloader=False
。
以下将确保服务器不会重新启动,以防任何源文件发生更改:
app.run(debug=True, use_reloader=False)
禁止Flask服务器在调试模式下重新启动某些源文件更改
对于您希望仅针对某些源文件禁止服务器重新启动的特定方案,我将使用动态模块加载。实现此目的的最简单方法是从导入中删除特定模块并改为使用__import__
函数。
示例代码 - 调用函数modules.temp.ololo(args)
:
try:
# Dynamic import
module = __import__('modules.temp')
try:
# Execute function
res = getattr(module, 'ololo')(args)
except AttributeError:
flask.current_app.logger.error('Function not found')
except ImportError:
flask.current_app.logger.error('Module not found')
将您的temp.py
移动到专门用于动态加载的模块中,并调整代码以便以类似的方式使用其中的资源。