使用芹菜和django的多个消息代理

时间:2014-08-06 05:57:51

标签: python django celery celery-task

我正在和django一起使用芹菜。 我有两个芹菜应用程序在同一台服务器上运行,但使用不同的消息代理。 一个是使用redis,另一个是使用django-orm。 使用redis后端的应用程序配置为仅从signgle队列接收任务。 另一个应用程序配置为处理所有其他队列。 现在的问题是,如果我使用redis bankend启用应用程序,则其他应用程序将停止从orm后端接收任何任务。

我怎样才能做到这一点?

这就是我所做的。 在settings.py

BROKER_URL = 'django://'
CELERY_RESULT_BACKEND='djcelery.backends.database:DatabaseBackend'

CELERY_TASK_SERIALIZER = 'json'
CELERY_RESULT_SERIALIZER = 'json'
CELERY_ACCEPT_CONTENT = ['json']
CELERY_ROUTES = {'dbmlib.imagecache.tasks.gen_cache_s3': {'queue': 'imagecache'}}

应用程序。

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'settings')

app = Celery('celeryapp')

app.config_from_object('django.conf:settings')
app.autodiscover_tasks(lambda: settings.INSTALLED_APPS)


img_caching_app = Celery('img_caching',broker='redis://10.0.0.106:6379/14')

img_caching_app.config_from_object('django.conf:settings')
img_caching_app.autodiscover_tasks(lambda: settings.INSTALLED_APPS)

我这样经营工人:

celery -A cms_celery.img_caching_app worker -Q imagecache -l info
celery -A cms_celery.celery_app worker -l info

0 个答案:

没有答案