flask 如何在运行中修改配置文件?以及如何重启 flask 应用

2015-05-29 10:19:36 +08:00
 MrGba2z
比如我config中有行配置是
version = 1.0

而我想在运行的时候,
把version改成1.1(硬修改, 程序退出时, 文件中要依旧是1.1, 这样下次运行就直接是1.1了)
是不是只有字符串查找并且替换这种办法? 有没有好一点的做法(在不使用数据库的情况下)

第二个问题是:
如何在flask应用中重启自身?就像开启了debug模式那样的重启就行.(不用做到检测代码修改那种, 只要能写出个函数调用后重启应用就行)
在关闭debug模式后, 能实现吗? 我在stackoverflow上看了下并没有类似的答案.
3397 次点击
所在节点    问与答
6 条回复
loading
2015-05-29 10:30:53 +08:00
flask.g 里面保存所有设置项目,然后做个接口,访问时刷新这个变量。
killpanda
2015-05-29 10:35:05 +08:00
搜搜 watchdog
sunus
2015-05-29 10:37:19 +08:00
如果是多个实例就不行。比如用gunicorn跑,会有N个flask实例在跑,接口访问不确定会是哪个实例。

gunicorn可以通过-HUP来reload各个实例。网上也能找到很多zero downtime app deployment。 感觉都稍微复杂了点。

我也很好奇最佳实践是什么样的。希望能找到方便的办法动态更改app的配置
awanabe
2015-05-29 10:41:24 +08:00
首先,你在服务器上面直接用flask 的 app.run() 跑单实例么?这样做阻塞很严重。
一般做法就是开uwsgi之类的应用服务器,每次更新代码之后,直接uwsgi 重启就可以部署新代码,自己写一个脚本,每次调用即可
MrGba2z
2015-05-29 11:20:21 +08:00
@loading
正在看, 感谢告之,


@killpanda
暂时不考虑第三方库, 因为这种似乎不如@awanabe 说的直接用uwsgi这样的办法来重启方便.
facat
2015-05-29 11:22:00 +08:00
如果用的是uwsgi
可以这样
uwsgi --reload /tmp/uwsgi-master.pid 重启

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/194595

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX