安装
1 | pip install django-celery-beat |
配置
- 在
settings.py
中添加如下配置
1 | INSTALLED_APPS = ( |
- 使用命令
python manage.py migrate
创建数据库迁移,会生成这几张表:
1 | django_celery_beat.models.PeriodicTask # 周期性任务 |
- 创建启动文件,在
manage.py
所在目录创建一个启动文件celery.py:
1 | import os |
创建定时任务
一个定时任务可以是一个简单的函数,例如(得在CELERY_IMPORTS
下才能在后台创建),例如
1 | from 项目名.celery import celery_app |
创建定时执行的任务:
在admin后台创建
PeriodicTask
,选择执行周期即可或者手动插入至
PeriodicTask
:1
2
3schedule, created = IntervalSchedule.objects.get_or_create(every=10, period=IntervalSchedule.SECONDS)
PeriodicTask.objects.create(interval=schedule, name='Custom task', task='schedules.my_corn_minder')
PeriodicTask.objects.create(interval=schedule, name='Custom task', task='schedules.my_corn_minder', args=json.dumps(['arg1', 'arg2']), kwargs=json.dumps({'abc': 12})) # 提供参数
启动任务
需要使用下面的命令来启动worker
,这样可以动态更改项目执行计划后自动生效
1 | ./venv/bin/celery -A 项目名 worker --beat --scheduler django -l debug --logfile=/var/log/celery.log --detach |
使用Django-Celery-Result保存定时任务执行结果
安装: pip install django-celery-resutls && python manage.py migrate
,这会生成一张taskresult
表,上面定时任务的结果会自动保存在表中