мы используем Redis в качестве нашего результирующего бэкэнда. Однако для одной задачи мы хотели бы переопределить это, чтобы вместо этого использовать RabbitMQ.Как переопределить сервер для задач сельдерея
Документация Task.backend говорит:
В результате магазин бэкенд использовать для выполнения этой задачи. По умолчанию к заходящего
CELERY_RESULT_BACKEND Поэтому я предположил, что мы могли бы установить Task.backend
в строку того же формата, принятого CELERY_RESULT_BACKEND
.
Так что я стараюсь это:
celeryconfig.py
CELERY_RESULT_BACKEND = "redis://redis-host:7777"
tasks.py
@app.task(backend='amqp://[email protected]/tasks-stg')
def my_task(params):
...
Однако работник терпит неудачу с:
[2015-05-07 13:33:49,264: ERROR/Worker-1] Process Worker-1
Traceback (most recent call last):
File "/project/python2.7_x64/lib/python2.7/site-packages/billiard/process.py", line 292, in _bootstrap
self.run()
File "/project/python2.7_x64/lib/python2.7/site-packages/billiard/pool.py", line 286, in run
self.after_fork()
File "/project/python2.7_x64/lib/python2.7/site-packages/billiard/pool.py", line 389, in after_fork
self.initializer(*self.initargs)
File "/project/python2.7_x64/lib/python2.7/site-packages/celery/concurrency/prefork.py", line 81, in process_initializer
app=app)
File "/project/python2.7_x64/lib/python2.7/site-packages/celery/app/trace.py", line 178, in build_tracer
store_result = backend.store_result
AttributeError: 'str' object has no attribute 'store_result'
Это работало для меня, несмотря на заключительное замечание ответчика. –