Я пытался создать тестовые примеры для того, что я делал с моим проектом django. В проекте есть несколько задач сельдерея, которые выполняются при появлении сигналов (pre_save, post_delete..etc)
Также я использовал django-nose в качестве своего test_runner, поэтому, чтобы заставить его работать вместе, я сделал свой собственный бегун и унаследовал оба класса.
# -*- coding: utf-8 -*-
from django_nose import NoseTestSuiteRunner
from djcelery.contrib.test_runner import CeleryTestSuiteRunner
class MixedInTestRunner(NoseTestSuiteRunner, CeleryTestSuiteRunner):
pass
Я также обновил свой TEST_RUNNER
, чтобы использовать класс выше, ниже моя конфигурация celery.py, которую я импортирую в свои настройки.py
from __future__ import absolute_import, unicode_literals
from celery import Celery
app = Celery('proj',
broker='amqp://')
# Optional configuration, see the application user guide.
app.conf.update(
CELERY_TASK_RESULT_EXPIRES=3600,
CELERY_TASK_SERIALIZER='json',
CELERY_ACCEPT_CONTENT=['json'],
CELERY_RESULT_SERIALIZER='json',
CELERY_RESULT_BACKEND='djcelery.backends.database:DatabaseBackend',
)
if __name__ == '__main__':
app.start()
что странно на данный момент, когда я запускаю тестовый пример для определенного приложения, он успешно выполняется без каких-либо проблем
./manage.py test --nologcapture -s messaging # this works
но когда я запускаю для всех приложений, я получаю сообщение об ошибке для всех задач, которые имеют зависимость возвращаемого значения от задачи сельдерея, даже результат.успешный() всегда возвращает ложь
./manage.py test --nologcapture -s # this fails