Как установить бэкэнд для django-сельдерей. Я установил результат сельдерея BACKEND, но он не распознается
Я устанавливаю CELERY_RESULT_BACKEND = "amqp" в celeryconfig.py но я получаю:
>>> from tasks import add
>>> result = add.delay(3,5)
>>> result.ready()
Traceback (most recent call last):
File "<console>", line 1, in <module>
File "/djangoprojects/venv/local/lib/python2.7/site-packages/celery/result.py", line 105, in ready
return self.state in self.backend.READY_STATES
File "/djangoprojects/venv/local/lib/python2.7/site-packages/celery/result.py", line 184, in state
return self.backend.get_status(self.task_id)
File "/djangoprojects/venv/local/lib/python2.7/site-packages/celery/backends/base.py", line 414, in _is_disabled
raise NotImplementedError("No result backend configured. "
NotImplementedError: No result backend configured. Please see the documentation for more information.
3 ответов
Я только что прошел через это, чтобы пролить свет на это. Можно было бы подумать, что для всей большой документации, заявляющей, что некоторые из них были бы немного более очевидными.
Я предполагаю, что у вас есть RabbitMQ и работает (он должен быть запущен), и что у вас есть dj-сельдерей установлен.
как только у вас есть это, все, что вам нужно сделать, это включить эту одну строку в свой setting.py файл.
BROKER_URL = "amqp://guest:guest@localhost:5672//"
тогда вам нужно запустить syncdb по работу, используя:
python manage.py celeryd -E -B --loglevel=info
на -E
заявляет, что вы хотите, чтобы события были захвачены и -B
состояния, которые вы хотите celerybeats работает. Первые позволяют вам фактически видеть что-то в окне администратора, а позже позволяет планировать. Наконец, вам нужно убедиться, что вы действительно собираетесь захватить события и статус. Поэтому в другом терминале запустите следующее:
./manage.py celerycam
а затем, наконец, вы сможете увидеть рабочий пример, приведенный в доктор.. -- Опять предполагая, что вы создали tasks.py то есть говорит.
>>> result = add.delay(4, 4)
>>> result.ready() # returns True if the task has finished processing.
False
>>> result.result # task is not ready, so no return value yet.
None
>>> result.get() # Waits until the task is done and returns the retval.
8
>>> result.result # direct access to result, doesn't re-raise errors.
8
>>> result.successful() # returns True if the task didn't end in failure.
True
кроме того, вы можете просмотреть свой статус в панели администратора.
надеюсь, это поможет!! Я бы добавил еще одну вещь, которая помогла мне. просмотр файла журнала RabbitMQ был ключевым, поскольку он помог мне определить, что django-celery на самом деле разговаривал с RabbitMQ.
вы используете сельдерей django?
Если это так, вам нужно запустить оболочку python в контексте django (или любой технический термин).
тип:
python manage.py shell
и попробуйте свои команды из этой оболочки
привет пробовал все, чтобы работать сельдерей v3.1.25 с версией Django 1.8 ничего не получилось.. Наконец ниже линии помог мне ,чувствуя себя счастливым
app = Celery('documents',backend="celery.backends.amqp:AMQPBackend")
Setting backend="celery.backends.amqp:AMQPBackend" fixed my error.