Задать вопрос

Сelery, как исправить ошибку: Error daemonic processes are not allowed to have children?

Добрый день, ошибку понимаю, что из процесса-демона нельзя создавать другие процессы, но где создаётся этот процесс тоже не ясно, в селери? Как избежать этого?
Таска
@app.task
def periodic_download_ostrovok():
#         Сlass.download()
Вызываемый метод
Ругается на multiprocessing.Manager()
def download():
    with multiprocessing.Manager() as manager:
          for i in range(n_proc):
                    p = multiprocessing.Process(
                        target=cls._add_hotel,
                        args=(n_proc,
                              i,
                              filename,
                              db_name,
                              regions,
                              result,
                              cut))
                    process_pool.append(p)
                for p in process_pool:
                    p.start()
                for p in process_pool:
                    p.join()
                if result.get('error'):
                    raise Exception(result.get('error'))
  • Вопрос задан
  • 854 просмотра
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 1
Ваш таск и является тем самым "daemonic process", запускаемым Celery.
Многопоточность нужно реализовать силами Celery - это встроенный функционал, следует обратиться к документации за примерами распараллеливания выполнения джобов.

Поверхностно проглядев доку, я так понял, что если на вход джобы приходит некий list, Celery может его нарезать на чанки и запустить асинхронно их обработку.

P. S. Вам уже отвечали где создаются эти процессы Celery, как работает?
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
Strikt Москва
от 100 000 до 180 000 ₽
ITK academy Саратов
от 75 000 ₽
Sim-Ba Pay Санкт-Петербург
от 180 000 ₽