动态定时任务:在运行时创建与管理 Celery Beat 周期任务
突破静态 crontab 限制,通过 Django Admin 或 API 动态增删改查周期性任务,并实时生效。 · 难度:入门 · +10XP
动态定时任务:在运行时创建与管理 Celery Beat 周期任务
一般教程教你在 settings.py 写死 CELERY_BEAT_SCHEDULE。本教程教你使用 djcelery 或 django-celery-beat 的数据库调度器(DatabaseScheduler)。你将学习如何通过 Model(如 PeriodicTask)来创建每分钟、每小时或自定义 cron 表达式的任务。重点包括:传递 JSON 参数、任务启用/禁用、立即执行一次(run immediately)。最终实现一个可在线编辑的定时任务面板。
from django_celery_beat.models import PeriodicTask, IntervalSchedule
schedule, created = IntervalSchedule.objects.get_or_create(
every=10,
period=IntervalSchedule.SECONDS,
)
PeriodicTask.objects.create(
name='My Dynamic Task',
task='myapp.tasks.my_task',
interval=schedule,
args=json.dumps(['arg1']),
)