我正在和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