仅在编辑特定文件时重新启动Flask

时间:2017-10-25 14:56:45

标签: python-3.x flask werkzeug

我有一个使用Flask建立的网站(在flask mega tutorial之后)。 我开发时编辑了views.py。在同一目录中,我有一个temp.py,它是以编程方式编辑的。

现在我将服务器设置为DEBUG,以便每次编辑views.py时,服务器都会重新启动。我的问题是,每次我的程序编辑temp.py时,服务器也会重新启动,这会导致许多事情中断。 我有什么办法让烧瓶忽略temp.py而只在决定重新启动时只看views.py

1 个答案:

答案 0 :(得分:2)

禁止Flask服务器在调试模式下重新启动所有源文件更改

摘自Flask documentation

  

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移动到专门用于动态加载的模块中,并调整代码以便以类似的方式使用其中的资源。

相关问题