Windows+Celery4+eventlet,异步报错:Recursion Error: maximum recursion depth exceeded while calling a Python object
前情提要:Windows环境下,使用Celery4和eventlet,在Django项目中启用异步和周期,报错如下:
RecursionError: maximum recursion depth exceeded while calling a Python object
经过排查,发现celery 4以上的版本不支持windows,要想使celery4以上的版本可以支持windows,可以使用以下方法:
一、使用eventlet
安装
pip install eventlet
使用
python manage.py celery worker -l info -P eventlet
但是,如果涉及到多进程,eventlet则会出错,就如我们开头的错误,就是多进程错误,这里就需要使用gevent
二、使用gevent
1、安装:
pip install gevent
2、在manage.py
文件中添加以下代码
import gevent.monkey
gevnt.monkey.patch_all()
3、启用
python manage.py celery worker -l info -P gevent