关于django celery配置的backend

在django中经常使用celery完成异步任务。之前一直是在每个django应用服务器上启动一个redis服务,一直没有问题。

随着应用服务器数量增多,希望在一台机器上假设一个redis服务,所有的django服务器公用这个redis服务。

假设在redis_server_host主机上架设好了redis服务,端口6379

vim ${dango_project_settings_dir}/celery.py

redis_broker = "redis://%s:%d/0" % (redis_server_host, 6379)
CELERY_RESULT_BACKEND = "redis://%s:%d/1" % (redis_server_host, 6379)

#app = Celery('hcloud', backend='redis', broker=redis_broker) # backend默认使用本地redis服务,这会失败。
#app = Celery('hcloud', backend=None, broker=redis_broker) # 不使用backend,可以成功
app = Celery('hcloud', backend=CELERY_RESULT_BACKEND, broker=redis_broker) # 使用同样的redis server,但是数据库改为1,成功


如果是以root身份启动celery,还要在上述文件中加入以下文本:

from celery import Celery, platforms

platforms.C_FORCE_ROOT = True


你可能感兴趣的:(关于django celery配置的backend)