gpt4 book ai didi

python - 使用多个 Gunicorn 工作线程时仅启动 Django 配置应用程序一次

转载 作者:行者123 更新时间:2023-12-01 08:31:27 26 4
gpt4 key购买 nike

我正在使用:

  • Python 3.6
  • django==2.1.1
  • gunicorn==19.9.0

我已完成以下操作:

  • 创建了一个名为 api 的 django 项目
  • 创建了一个apiapp(我的项目中的一个应用程序)

我在 api_app 的 apps.py 中有这段代码:

from django.apps import AppConfig
from api import settings

class ApiappConfig(AppConfig):
name = 'apiapp'
verbose_name = "random_name"

def ready(self):
self.job()


@classmethod
def job(cls):
### doing whatever here for example :
print(settings.SHARED_VARIABLE)

以及 api_app 的 __init__.py 中的以下内容:

import os
default_app_config = 'apiapp.apps.ApiappConfig'

我正在创建一个 API,因此在部署时需要使用多个工作人员:

gunicorn api.wsgi -w 10

现在,我的问题是服务器启动时调用的函数 job 被调用了 10 次,因为我使用了 10 个 Gunicorn 工作线程,我只想调用它一次

我想做的另一件事是settings.SHARED_VARIABLE 变量,在不同的工作人员之间共享。该变量仅由在服务器启动时启动 app.py 的工作线程更新。

谢谢!

最佳答案

gunicorn 有一个设置可以执行此操作:--preload

因此,在我将其添加到 settings.py 中后:SHARED_VARIABLE = 'content of SHARED_VARIABLE' (并修复了 apiapp/__init__.py使用真实的应用程序名称),我可以运行gunicorn,并且只加载一次应用程序:

$ gunicorn api.wsgi -w 10 --preload
content of SHARED_VARIABLE
[2018-12-31 10:12:15 +0000] [394] [INFO] Starting gunicorn 19.6.0
[2018-12-31 10:12:15 +0000] [394] [INFO] Listening at: http://127.0.0.1:8000 (394)
[2018-12-31 10:12:15 +0000] [394] [INFO] Using worker: sync
[2018-12-31 10:12:15 +0000] [399] [INFO] Booting worker with pid: 399
[2018-12-31 10:12:15 +0000] [400] [INFO] Booting worker with pid: 400
[2018-12-31 10:12:15 +0000] [401] [INFO] Booting worker with pid: 401
[2018-12-31 10:12:15 +0000] [403] [INFO] Booting worker with pid: 403
[2018-12-31 10:12:15 +0000] [404] [INFO] Booting worker with pid: 404
[2018-12-31 10:12:15 +0000] [405] [INFO] Booting worker with pid: 405
[2018-12-31 10:12:15 +0000] [406] [INFO] Booting worker with pid: 406
[2018-12-31 10:12:15 +0000] [408] [INFO] Booting worker with pid: 408
[2018-12-31 10:12:15 +0000] [410] [INFO] Booting worker with pid: 410
[2018-12-31 10:12:15 +0000] [411] [INFO] Booting worker with pid: 411

关于python - 使用多个 Gunicorn 工作线程时仅启动 Django 配置应用程序一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53899596/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com