Отладка задач Celery без CELERY_ALWAYS_EAGER

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

socket.socket(socket.AF_INET,socket.SOCK_RAW,socket.IPPROTO_ICMP)

Я получаю ошибку:

    _sock = _realsocket(family, type, proto)
    error: [Errno 1] Operation not permitted

Я могу предположить, что это результат конфигурации CELERY_ALWAYS_EAGER. Как я могу решить эту проблему?

Я бы предложил не использовать CELERY_ALWAYS_EAGER и вместо этого запустить celery worker в отдельной вкладке на вашей машине разработки, например, так:

celery -A proj worker -l INFO

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

Смотрите https://docs.celeryproject.org/en/stable/django/first-steps-with-django.html#starting-the-worker-process

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