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

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

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

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

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

Похожие вопросы