如何在运行中的Flask实例中手动重载配置文件?
手动重载配置文件且无需重启Flask/Gunicorn实例的问题探讨
假设我们有一个依赖文件系统配置文件的服务:
class Service: def _load(): # (re)loads config file pass def do_some_work(): # uses config file pass
还有一个为客户端提供该服务的Flask应用:
app = Flask(__name__) service = Service() @app.route('/do-some-work') def do_some_work(): return service.do_some_work() if __name__ == '__main__': app.run()
核心问题:如何手动重载配置文件,且无需重启Flask/Gunicorn实例?
现有方案的缺陷
我了解几种常规方案,但各自存在不足:
- 使用watchdog或同类工具监控配置文件(目录)的变化
- 设置定时任务定期检查文件修改时间,比如Flask-APScheduler
- 新增类似
@app.route('/reload')的HTTP接口
需求与解决方案
我希望构建一个无需HTTP即可与运行中的Python进程交互的CLI工具,但对WSGI进程隔离机制了解有限。
更新:
可行方案是使用RPyC,但需要满足以下条件之一:
- Gunicorn以单worker模式启动
- 应用使用缓存存储配置数据
内容的提问来源于stack exchange,提问作者Maxim
相关产品推荐
相关产品推荐

