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