我正在用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)

我这样经营 Worker :

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