Flask自动重载功能在使用Pycharm远程部署时无法正常工作。

6

很难记得是什么时候,但在我的项目中,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

开发环境与调试模式均已开启。因此,在应用程序部署时保存文件更改时,我会收到通常的消息:
 * Detected change in '/path/to/changed/file.py', reloading

表明应用正在重新加载新代码。但实际上它并没有重新加载任何东西,而且这个消息在之后的更改中不会再出现,直到我被迫重新启动应用程序。

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

  • flask
  • flask-socketio
  • eventlet
  • flask-cors

欢迎提供任何帮助。谢谢 :)


你能把代码发布到Github上吗? - Kiran S
1个回答

1

FLASK_DEBUG环境变量的支持不佳,如果在代码中设置可能无法按预期运行。(引用自flask源码)。

建议使用调试模式下的flask run

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

如果仍然无法正常工作,可以强制使用重新加载器,如下所示:

if __name__ == '__main__':
    app.run(host=config.HOST, port=config.PORT, debug=True)

请注意,在使用app.run()方法时,必须添加if __name__ == '__main__'。此外,请参考以下文档:https://flask.palletsprojects.com/en/2.2.x/config/#DEBUG

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接