gpt4 book ai didi

django - 具有多个 django 站点的 celery

转载 作者:可可西里 更新时间:2023-11-01 11:14:55 26 4
gpt4 key购买 nike

我有几个客户站点的一个 django 后端:

my_proj
|- my_proj
|- __init__.py
|- settings.py
|- settings_development.py
|- settings_production_1.py
|- settings_production_2.py
|- settings_production_3.py
|- my_app_1
|- my_app_2
...

settings_production_1.py:

from settings import *

DEBUG = False
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'customer_1_db',
'USER': 'some_user',
'PASSWORD': 'some_passw',
'HOST': '127.0.0.1',
'PORT': '',
}
}
MEDIA_ROOT = 'media/customer_1'

每个站点都是一个由 supervisord 管理的单独进程,并使用单独的数据库。我在单独的服务器上也有一个 redis。

我需要一些具有数据库访问权限的 celery 后台任务。

我该怎么做?

更新

好的,我可以运行多个 celery worker。我可以从控制台做到这一点

$ export DJANGO_SETTINGS_MODULE=my_proj.settings_production_2
$ /home/.../my_vitrual_env/bin/celery -A my_proj worker -l info

但是我不能从 supervisord 运行它

[program:celery2]
directory=/home/.../my_proj
command=/home/.../my_vitrual_env/bin/celery -A asl worker -l info
environment=DJANGO_SETTINGS_MODULE=my_proj.settings_production_2
...

最佳答案

您为您的项目配置一个应用程序。例如:


my_proj
| - my_proj
|- __init__.py
<b>|- celery.py</b>
|- settings.py
|- settings_development.py
|- settings_production_1.py
|- settings_production_2.py
|- settings_production_3.py

等等

在 celery.py 中,您从 the appropriate settings object 配置 celery 应用程序通过设置 DJANGO_SETTINGS_MODULE 环境变量并使用它来加载适当的设置。

然后在 supervisord 中,通过将起始行指定为 celery multi -A my_proj 并使用正确的 DJANGO_SETTINGS_MODULE env 变量,为每个站点提供自己的 celery。

关于django - 具有多个 django 站点的 celery ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53041596/

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