【问题标题】:Detect if flask is being run via gunicorn?检测烧瓶是否正在通过 gunicorn 运行?
【发布时间】:2014-04-07 04:50:55
【问题描述】:

有没有办法检查我的烧瓶应用程序是否在 gunicorn 容器中运行?目前我设置了一个环境变量来告诉我的应用程序,但我希望它是自动的。另外,有什么方法可以检查正在使用的工人阶级吗?


出于几个不同的原因,我需要检测到这一点。请注意,我通常使用 gunicorn,但在测试期间我有时不会。

  1. 日志记录:在 gunicorn 中运行时,我附加到 gunicorn 信息日志,否则附加到标准输出日志。
  2. Eventlet/子进程:由于我使用子进程,我需要确保在使用 eventlet 时完成了正确的 monkey_patch'ing,否则将无法正常运行。 (我称之为许多子流程)。

【问题讨论】:

  • 我很好奇你为什么要检测这个?
  • @BurhanKhalid,为问题添加了一些信息。

标签: python flask gunicorn


【解决方案1】:

聚会迟到了,但似乎很有效的一个非常老套的解决方案:

is_gunicorn = "gunicorn" in os.environ.get("SERVER_SOFTWARE", "")

【讨论】:

  • 这不是“非常hacky”。这是将数据向下传递的一种非常标准的方式。
  • @TomaszZielinski 我认为它很hacky的唯一原因是它似乎没有在任何地方记录(AFAIK),因此不能保证可用或始终采用相同的格式。如果 gunicorn 有一个记录在案的环境变量 IS_GUNICORN 在 gunicorn 导入我的应用程序时定义,我会更舒服。
  • 我最终在我的启动脚本中添加了一个IS_GUNICORN 环境变量并使用它。
猜你喜欢
  • 2017-06-06
  • 1970-01-01
  • 2020-09-10
  • 1970-01-01
  • 2016-03-19
  • 1970-01-01
  • 2012-11-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多