【问题标题】:How to change a flask config variable at runtime when running with gunicorn使用 gunicorn 运行时如何在运行时更改烧瓶配置变量
【发布时间】:2016-08-28 04:08:24
【问题描述】:

我有一个使用 Gunicorn 运行的烧瓶应用程序。在我的 app.config 中,我有一个字段“键”,我想在不重新启动应用程序的情况下动态更改它。

我能够在没有 gunicorn 的情况下在本地执行此操作,即更改 app.config["key"] 的值。 但是当使用 gunicorn 时,密钥会在每次请求后恢复到原来的值。

有什么想法吗?

谢谢

【问题讨论】:

  • 我不确定你的真正意思是什么,docs.gunicorn.org/en/stable/settings.html#reload。你想自动重启吗?
  • 不是自动重启。因此密钥每月自动轮换并写入文件。密钥是用于访问 amazon S3 的 IAM 密钥。在应用程序启动时,我有 app.config["key"] = default_value。每当密钥发生新变化时,我都会尝试此 app.config["key"] = new_key_from_file
  • 你能提供一个MCVE吗?
  • 您的应用程序很可能在多个线程/进程中运行,因此您需要全部更改。个人认为解决这个问题最好的办法是使用共享缓存系统,比如redis/memcache。如果它发生变化,它不应该在配置中恕我直言。

标签: python multithreading flask gunicorn


【解决方案1】:

您必须重新加载应用程序,因为gunicorn 处理工作人员甚至在达到max_requests 之后重新启动它们。

可以使用HUP 信号更新配置文件和reload gunicorn gracefully,而不会丢失请求。

$ kill -HUP masterpid

如果它是共享密钥,也许您想要一个共享存储库,如数据库或etcd。改变那里的价值,你的应用程序得到价值,一切都很好。

【讨论】:

  • 为什么 2 年后投了 2 票?也许有些东西改变了。请,下一个反对这个答案的人,评论原因。
猜你喜欢
  • 2020-05-23
  • 1970-01-01
  • 2012-11-19
  • 2021-12-20
  • 1970-01-01
  • 1970-01-01
  • 2014-04-07
  • 2020-05-15
  • 1970-01-01
相关资源
最近更新 更多