С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'))
  • Вопрос задан
  • 698 просмотров
Пригласить эксперта
Ответы на вопрос 1
Ваш таск и является тем самым "daemonic process", запускаемым Celery.
Многопоточность нужно реализовать силами Celery - это встроенный функционал, следует обратиться к документации за примерами распараллеливания выполнения джобов.

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

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

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

Войти через центр авторизации
Похожие вопросы