django.db.utils.DatabaseError: DatabaseWrapper objects created in a thread can only be used in that same thread. The object with alias 'default' was created in thread id 19767205568
00 and this is thread id 1976775359680.
问题:
执行celery worker -A s1 -l info -P eventlet能正常,放立即执行的任务(delay)没有问题,不过放apply_async的任务时就会报上面的错误。
网上都说是版本的问题,我的版本是
celery 4.4.0
Django 4.2.1
django-redis 5.2.0
eventlet 0.33.3
redis 4.5.4
解决办法:
由于-P eventlet是多线程任务的,改成单线程任务,用参数--pool=solo代替-P eventlet。
还需要把python3.9换成python3.8才可以,否则还会报其它错。
当前包的版本信息如下:
celery 4.4.0
Django 4.2.2
django-redis 5.3.0
eventlet 0.33.3
redis 4.5.4
执行这个就正常了
celery worker -A djangoTest -l info

在使用Celeryworker并启用了-Peventlet多线程池时遇到DatabaseError,切换到单线程池(--pool=solo)解决了问题。更新Django到4.2.2,且需使用Python3.8环境以避免其他错误。
最低0.47元/天 解锁文章
1250

被折叠的 条评论
为什么被折叠?



