Celery 4.x запускается (с исправлениями # 4078), но все задачи вылетают
Воспользуйтесь учебником « Первые шаги» (http://docs.celeryproject.org/en/latest/getting-started/first-steps-with-celery.html)
сельдерей -A tasks worker --loglevel = info
доп. задержка (2,2)
Задача выполнена и выдается результат 4
Celery тормозит.
"C: \ Program Files \ Python36 \ Scripts \ celery.exe" -A perse.celery worker -l info
-------------- сельдерей @ PETRUS v4.0.2 (скрытый вызов)
--- * * * - Windows-10-10.0.14393-SP0 2017-06-08 15:31:22
-------------- [очереди]
.> обмен сельдерея = сельдерей (прямой) ключ = сельдерей
[задачи]
. perse.tasks.celery_add
[2017-06-08 15: 31: 22,685: INFO / MainProcess] Подключено к amqp: // guest : *@127.0.0.1: 5672 //[2017-06-08 15: 31: 22,703: INFO / MainProcess] mingle: поиск соседей[2017-06-08 15: 31: 23,202: INFO / SpawnPoolWorker-5] дочерний процесс 5124 вызывает self.run ()[2017-06-08 15: 31: 23,207: INFO / SpawnPoolWorker-4] дочерний процесс 10848 вызывает self.run ()[2017-06-08 15: 31: 23,208: INFO / SpawnPoolWorker-10] дочерний процесс 5296 вызывает self.run ()[2017-06-08 15: 31: 23,214: INFO / SpawnPoolWorker-1] дочерний процесс 5752 вызывает self.run ()[2017-06-08 15: 31: 23,218: INFO / SpawnPoolWorker-3] дочерний процесс 11868 вызывает self.run ()[2017-06-08 15: 31: 23,226: INFO / SpawnPoolWorker-11] дочерний процесс 9544 вызывает self.run ()[2017-06-08 15: 31: 23,227: INFO / SpawnPoolWorker-6] дочерний процесс 16332 вызывает self.run ()[2017-06-08 15: 31: 23,229: INFO / SpawnPoolWorker-8] дочерний процесс 3384 вызывает self.run ()[2017-06-08 15: 31: 23,234: INFO / SpawnPoolWorker-12] дочерний процесс 8020 вызывает self.run ()[2017-06-08 15: 31: 23,241: INFO / SpawnPoolWorker-9] дочерний процесс 15612 вызывает self.run ()[2017-06-08 15: 31: 23,243: INFO / SpawnPoolWorker-7] дочерний процесс 9896 вызывает self.run ()[2017-06-08 15: 31: 23,245: INFO / SpawnPoolWorker-2] дочерний процесс 260, вызывающий self.run ()[2017-06-08 15: 31: 23,730: INFO / MainProcess] mingle: all alone[2017-06-08 15: 31: 23,747: INFO / MainProcess] celery @ PETRUS готов.[2017-06-08 15: 31: 49,412: INFO / MainProcess] Полученная задача: perse.tasks.celery_add [524d788e-e024-493d-9ed9-4b009315fea3][2017-06-08 15:31: 49,416: ERROR / MainProcess] Обработчик задачи вызвал ошибку: ValueError ('недостаточно значений для распаковки (ожидается 3, получено 0)',)Отслеживание (последний вызов последний):Файл "c: \ program files \ python36 \ lib \ site-packages \ billiard \ pool.py", строка 359, в рабочем циклерезультат = (Верно, prepare_result (fun ( args, ** kwargs)))
Файл "c: \ program files \ python36 \ lib \ site-packages \ celery \ app \ trace.py", строка 518, в _fast_trace_task
задачи, принять, hostname = _loc
ValueError: недостаточно значений для распаковки (ожидалось 3, получено 0)
См. Запрос на вытягивание №4078.
FWIW Я работал над этим, используя реализацию пула событий (параметр командной строки "-P eventlet").
Решение @drewdogg следует упомянуть в руководстве.
Я должен подтвердить: эта ошибка появляется на
Celery 4.1.0
Windows 10 Enterprise 64 bit
при выполнении команды celery -A <mymodule> worker -l info
и работает следующее обходное решение:
pip install eventlet
celery -A <mymodule> worker -l info -P eventlet
достаточно определить переменную среды FORKED_BY_MULTIPROCESSING = 1 для рабочего экземпляра.
@auvipy Работайте у меня, спасибо.
@auvipy это действительно решает проблему :) 👍
Добавлять:
импорт ОС
os.environ.setdefault ('FORKED_BY_MULTIPROCESSING', '1')
перед определением экземпляра Celery достаточно
может быть, это следует упомянуть в документации? @wonderfulsuccess хотите отправить запрос на
@wonderfulsuccess
Спасибо
@auvipy это действительно решает проблему
Добавлять:
импорт ОС
os.environ.setdefault ('FORKED_BY_MULTIPROCESSING', '1')
перед определением экземпляра Celery достаточно
Спасибо, сработало!
@auvipy, если это только одна строка кода, которую нужно исправить, то почему бы просто не исправить ее в сельдерее, вместо того, чтобы использовать документацию, чтобы рекомендовать пользователям реализовать обходной путь? Почему ошибка, полностью нарушающая платформу, с таким простым исправлением все еще остается проблемой спустя почти 2 года?
куда вы хотите сельдерей положить этот мог? Я считаю, что это хорошо подходит для конкретных инструкций Windows. если вы хотите исправить это на уровне кода, приходите с соответствующим PR.
@auvipy это действительно решает проблему :) 👍
Добавлять:
импорт ОС
os.environ.setdefault ('FORKED_BY_MULTIPROCESSING', '1')
перед определением экземпляра Celery достаточно
Вы классные, спасибо большое!
@auvipy Я искал ответ на эту проблему, я потратил много времени, пытаясь исправить это, большое вам спасибо
Самый полезный комментарий
Я должен подтвердить: эта ошибка появляется на
при выполнении команды
celery -A <mymodule> worker -l info
и работает следующее обходное решение: