之前写过使用celery实现定时任务的文章,但是每次修改都是代码级别,每次增加都要修改配置,然后执行应用发布重启等等,比较麻烦。那有没有能够直接通过修改数据来实现定时任务的修改的呢?当然有,django的djcelery本身后台就有。其他跟celery配置一致。
主要Crontabs,Intervals,Periodic Tasks三个表。
Crontabs对应表为djcelery.models.
CrontabSchedule,内容为
"id": 1,
"minute": "*",
"hour": "*",
"day_of_week": "*",
"day_of_month": "*",
"month_of_year": "*"
格式跟crond服务的时间一致
Intervals对应表为djcelery.models.IntervalSchedul,内容为
"id": 1,
"every": 5,
"period": "minutes/days/hours/seconds"
表示时间间隔
PeriodicTask为主表,对应djcelery.models.PeriodicTask,表内容为
-
{
-
"id": 1,
-
"crontab": null,
-
"interval": {
-
"id": 1,
-
"every": 5,
-
"period": "minutes"
-
},
-
"date_changed": "2020-07-24 14:41:18",
-
"name": "ato",
-
"task": "api.tasks.save_height",
-
"args": "[]",
-
"kwargs": "{}",
-
"queue": null,
-
"exchange": null,
-
"routing_key": null,
-
"expires": null,
-
"enabled": true,
-
"last_run_at": null,
-
"total_run_count": 0,
-
"description": ""
-
}
其中interval和crontab只能选择一种。
介绍完基本情况,要是我不想使用默认的后台,要使用自定义的前端来编辑作业任务。这时候就把periodtask作为接口对外开放了。这部分详见之前的restframework的介绍。
阅读(1611) | 评论(0) | 转发(0) |