Celery-Django: невозможно выполнить задачи асинхронно - PullRequest
4 голосов
/ 21 сентября 2011

Я пытаюсь запускать некоторые задачи в фоновом режиме, пока пользователи просматривают мой сайт, но всякий раз, когда я вызываю функцию с использованием Celery, она, кажется, выполняется синхронно, а не асинхронно.

например, когда я вызываю function.delay (), весь сайт зависает, пока не вернется функция.delay (). Другие методы вызова функций аналогичным образом (apply_async, подзадачи) демонстрируют ту же проблему.

Я предполагаю, что что-то в Django или Celery неправильно настроено, но я не знаю, что это такое.

Конфигурация сельдерея в settings.py:

import djcelery
djcelery.setup_loader()

CELERY_RESULT_BACKEND = "amqp"
CELERYBEAT_SCHEDULER = "djcelery.schedulers.DatabaseScheduler"
BROKER_HOST = "localhost"
BROKER_PORT = 5672
BROKER_USER = "test"
BROKER_PASSWORD = "test"
BROKER_VHOST = "testhost"

TEST_RUNNER = "djcelery.contrib.test_runner.run_tests"

CELERY_IMPORTS = ("myapp.tasks",)

BROKER_BACKEND = "memory"
CELERY_ALWAYS_EAGER = True

Пытаясь запустить демона Celery с помощью «./manage.py celeryd», я получаю следующий вывод:

[2011-09-23 09:25:38,026: WARNING/MainProcess]  

 -------------- celery@iMac.local v2.2.7
---- **** -----
--- * ***  * -- [Configuration]
-- * - **** ---   . broker:      memory://test@localhost:5672/testhost
- ** ----------   . loader:      djcelery.loaders.DjangoLoader
- ** ----------   . logfile:     [stderr]@WARNING
- ** ----------   . concurrency: 4
- ** ----------   . events:      OFF
- *** --- * ---   . beat:        OFF
-- ******* ----
--- ***** ----- [Queues]
 --------------   . celery:      exchange:celery (direct) binding:celery


[2011-09-23 09:25:38,035: WARNING/MainProcess] celery@iMac.local has started.

1 Ответ

8 голосов
/ 22 октября 2011

Попробуйте удалить

CELERY_ALWAYS_EAGER = True

Вы явно просите celery выполнять задачи синхронно.Это всегда будет ждать результата.Этот параметр полезен для написания юнит-тестов и т. Д.

Чтение http://ask.github.com/celery/configuration.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...