celery任务因dlib cnn人脸检测而失败

时间:2019-03-19 22:20:39

标签: python celery dlib

我的烧瓶应用程序使用了以下扩展名:

Python 3.7.2
Flask 1.0.2
Celery 4.3.0rc2
dlib 19.6

没有芹菜,作为用于面部检测的常规单线程程序,一切正常,但是当我将其作为任务启动时,会发生以下错误:

  

任务处理程序引发错误:WorkerLostError('Worker过早退出:   信号11(SIGSEGV)。')

这段代码:

dlib.cnn_face_detection_model_v1(model)

我不明白为什么,但是有了这个:

dlib.get_frontal_face_detector()

工作正常!

我知道由dlib(或BLAS)引起的冲突不是线程安全的,但是有什么方法可以禁用多处理功能,或者使芹菜工作者使用此功能吗?

UPD : 我有以下项目结构:

./app/face_detector.py
./tasks.py

tasks.py中,我在文件顶部使用了它:

from app.face_detector import FaceDetector

在任务内部导入的窍门:

@app.task
def foo():
    from app.face_detector import FaceDetector

根本不起作用,并抛出此错误:

  

未命名模块...

所以,我不理解github线程的解决方案,或者它不起作用

0 个答案:

没有答案