Отладка задач 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
Таким образом, вы избежите неприятных ошибок синхронизации, потому что ваша установка в реальном времени и в проекте ведет себя одинаково.