首页 > 解决方案 > Falcon/gunicorn 代码初始化(运行一次)与多个工作人员(单例?)

问题描述

我在 docker 中使用 Falcon 1.4.1 和 Gunicorn 19.9.0。

无法确定初始化应用程序的最佳方法 - 在我的 REST API 启动时运行一些代码,而不是每个工作人员运行一次。我有 3 名或更多工作人员正在为我的应用程序运行。

我试过使用 gunicorn on_starting webhook,但它仍然为每个工作人员运行一次。在我的 gunicorn_conf.py 文件中:

def on_starting(server):
    print('Here I am')

我还尝试了 gunicorn preload_app设置,我现在很乐意在生产中使用它,它允许应用程序初始化在启动工作程序之前运行一次。

我希望能够使用 gunicorn重新加载设置,以便文件更改重新启动与 preload_app 设置直接冲突的应用程序。

可能只是想要太多:) 有人对解决方案有任何想法吗?我看到一些尝试通过多处理来获取锁定文件,但结果你得到了一个锁定文件/工作者。

标签: python-3.xgunicornfalconframework

解决方案


我无法正确理解您到底想要实现什么?如果您也发布错误代码,这将有所帮助。

正如您所提到的,您可以使用 Gunicorn preload_app 设置而不是为所有工作人员运行一次代码。

现在您可以使用以下代码在文件更改时重新加载 Gunicorn 实例:

gunicorn --workers 3 -b localhost:5000 main:app --reload

如果这不是您要查找的内容,请在此处共享错误代码,因为您提到“我看到一些尝试通过多处理获取锁定文件,但结果您获得了锁定文件/工作人员。” 我会尽力帮助你。


推荐阅读