celery:守护进程不允许有子进程(使用并发.futures)

问题描述 投票:0回答:2

在Python(3.6)中,我尝试在celery任务(celery 3.1.17)中创建进程(使用多重处理),但它给出了错误:

守护进程不允许有子进程

代码

def mp():
  with concurrent.futures.ProcessPoolExecutor(max_workers=90) as executor:
                    data = executor.map(pdfocr,[no for no in list(json.keys())])
python python-3.x multiprocessing celery concurrent.futures
2个回答
3
投票

使用

-P threads
参数启动worker:

celery worker -P threads

Celery 版本 >= 4.4.0 已正式支持

参考:https://github.com/celery/celery/issues/4525#issuecomment-566503932


0
投票

尝试使用

billiard
包可以解决这个问题。我在使用
prefect
dask
时修复了同样的问题。

import billiard
from concurrent.futures import ProcessPoolExecutor
ProcessPoolExecutor(mp_context=billiard)
© www.soinside.com 2019 - 2024. All rights reserved.