Gunicorn 多个工作进程:有没有简单的方法只执行某段代码一次?

23 投票
1 回答
11086 浏览
提问于 2025-04-18 08:59

如果我用 -w 4 启动 gunicorn,并且我的应用内容是

print 'hello'

那么它会打印四次 'hello'。有没有什么办法可以让它只打印一次 'hello' 呢?我想在启动时做一些清理工作,这些工作我希望只执行一次。

1 个回答

27

你可以写一个叫做 服务器钩子 的东西,比如 on_starting,这个钩子会在主进程中运行,所以只会执行一次。

我觉得这些钩子只有在你用 Python 脚本来配置的时候才有效,就像在 他们的示例 中那样。


(这是提问者在说):

对我有效的方法是创建一个配置文件 "my_conf.py",内容是:

def on_starting(server):
     print(1)

然后

gunicorn [...] -w 2 -c my_conf.py &

在服务器启动时只打印一次 "1",尽管指定了要使用两个工作进程。

撰写回答