Flask 自动重新加载功能不适用于 Pycharm 远程部署

M. *_*dec 6 python remote-debugging remote-server pycharm flask

很难记住什么时候,但在某个时刻,Flask 的自动重新加载功能开始在我的项目中不再起作用。这是启动我的应用程序时的输出:

FLASK_APP = back/python/app/app.py:app
FLASK_ENV = development
FLASK_DEBUG = 1
In folder C:/path/to/project
ssh://[VirtualMachineIP]:22/root/env/bin/python3.7 -u -m flask run -h 0.0.0.0 -p 1234
 * Serving Flask app 'back/python/app/app.py:app' (lazy loading)
 * Environment: development
 * Debug mode: on
 * Running on all addresses.
   WARNING: This is a development server. Do not use it in a production deployment.
 * Running on http://[VirtualMachineIP]:1234/ (Press CTRL+C to quit)
 * Restarting with stat
 * Debugger is active!
 * Debugger PIN: 106-048-128
Run Code Online (Sandbox Code Playgroud)

开发环境和调试模式均已打开。因此,在将更改保存到文件中(部署应用程序时),我收到通常的消息:

 * Detected change in '/path/to/changed/file.py', reloading
Run Code Online (Sandbox Code Playgroud)

表明应用程序正在使用新代码重新加载。除了它不会重新加载任何内容,并且在我被迫重新启动应用程序之前,该消息不会出现在任何进一步的更改中。

PyCharms 在 Windows 上运行,并通过 ssh 与我的虚拟机进行通信,在虚拟机上执行代码。我已经安装了以下模块:

  • 烧瓶
  • 烧瓶插座
  • 小事件
  • 烧瓶-cors

欢迎任何帮助。谢谢 :)

Nic*_*ing 1

FLASK_DEBUG环境变量不受支持,如果在代码中设置,它可能不会按预期运行。(引自烧瓶来源)。

建议flask run在调试模式下使用。

例如: $ flask --app hello --debug run

如果还是不行,你可以强制使用 reloader,如下所示:

if __name__ == '__main__':
    app.run(host=config.HOST, port=config.PORT, debug=True)
Run Code Online (Sandbox Code Playgroud)

注意,app.run()必须用 包裹起来if __name__ == '__main__'

文档: https: //flask.palletsprojects.com/en/2.2.x/config/#DEBUG