Django celery .delay() в запросах застревает

У меня есть проект, запущенный на 3 разных окружениях, на 2 окружениях он работает, на production по какой-то причине перестал работать (раньше работал).

Код довольно прост У меня есть представление, которое запускает задачу с задержкой и должно немедленно вернуть некоторое сообщение пользователю:

class PrintTaskView(View):
    def get(self, request):
        logger.debug('ABOUT TO ADD A TASK')
        tasks.print_task.delay()
        logger.debug('TASK WAS ADDED')
        messages.info(request, _('Print task added to queue'))
        return HttpResponseRedirect(reverse_lazy('admin:index'))

Я в замешательстве, потому что это работает гладко на моей локальной машине и в тестовой среде, в то время как на производстве запрос застревает на загрузке после выполнения первого журнала. Еще больше меня смущает то, что если я запускаю код из оболочки (оболочка manage.py), то задача печати создается, подхватывается рабочим и выполняется. Также задачи celery beat выполняются без проблем.

Мои настройки сельдерея:

# Celery
CELERY_BROKER_URL = os.getenv('CELERY_BROKER_URL')
CELERY_RESULT_BACKEND = os.getenv('CELERY_RESULT_BACKEND')
CELERY_BEAT_SCHEDULE = {
    ...
}

website/__init__.py

from __future__ import absolute_import, unicode_literals
from .celery import app as celery_app

__all__ = ('celery_app',)

celery.py

from __future__ import absolute_import

from celery import Celery
from django.conf import settings

app = Celery('somename')
app.config_from_object('django.conf:settings', namespace='CELERY')
app.autodiscover_tasks(lambda: settings.INSTALLED_APPS, related_name='tasks')

Любая идея или предложение более чем приветствуется :)

Я случайно обнаружил, что в подключении к Redis в библиотеке celery или где-то рядом с ней есть ошибка, и вы фактически не получаете никакой ошибки, когда учетные данные неверны при доступе к Redis. Кто-то на сервере удалил переменные credential env, поэтому приложение не смогло подключиться к Redis, и ошибка не была возвращена. В то время как на виртуальном env, где они у меня были, я смог подключиться, и там все шло гладко.

Обратите внимание, если у вас возникла такая же проблема, убедитесь, что ваши учетные данные для доступа к Redis настроены правильно.

Вернуться на верх