我使用mod_wsgi通过Apache设置了一个Django项目,我现在正在尝试添加django-celery来运行定期和计划任务。不过,我偶尔会遇到错误消息,但我没有找到解释它们的含义。
当我使用以下方式启动Celerybeat时
./manage.py celery beat
我经常会遇到以下两个错误之一:
Message Error: cannot add item to database
celerybeat raised exception <class 'dbm.error'>: error('cannot add item to database',)
我可以看到celerybeat在项目目录中生成两个文件:celerybeat-schedule.dir和celerybeat-schedule.pag。我很确定这些文件是错误消息中提到的“数据库”。如果我删除这些文件,Celerybeat通常会运行几次没有问题,但随后会出现错误。
我是否需要使用celerybeat-schedule文件来避免此错误?我认为这可能是一个权限问题,但我看不出任何问题。
答案 0 :(得分:2)
只需rm celerybeat.db,然后重新启动celerybeat就可以了
答案 1 :(得分:0)
我可以通过安装python3-gdbm
(或python3-dbm
)包并重新创建计划文件来解决此问题。
答案 2 :(得分:-1)
有同样的问题,但无法弄清楚。
解决方法是使用数据库存储计划:
celery -A proj beat -S djcelery.schedulers.DatabaseScheduler
如果你走这条路,你需要pip install django-celery
并更新你的数据库。