一、背景

用过django的人应该都有被其强大、特方便、特丰富的管理后台所震撼,在安装好celery、django-celery模块后,会内置一套task的管理页面,如下图:

django-admin的celery页面

crontab配置页面

periodic tasks 配置页面

二、实现

但是这都是django-admin模板中的,我的需求是将这个功能跟自己的运维平台整合到一起,面对这个需求主要是操作两个模型,crontab和periodictask

1. Crontab

Crontab比较简单,就一张表,其实直接写个ModelForm去操作他的模型就可以了

lib/python3.6/site-packages/django_celery_beat/models.py

2. Periodic Task
Periodic Task稍微复杂一点,因为涉及到register task,不过经分析django-admin的中Periodic Task其时是通过“lib/python3.6/site-packages/django_celery_beat/admin.py”中的“PeriodicTaskForm”去操作“PeriodicTask”这个模型的,其实我们可以直接调用这个已经写的好的ModelForm

lib/python3.6/site-packages/django_celery_beat/admin.py

2.1 Crontab

2.1.1 Crontab ModelForm

有了上面的线索,我们现在来写Crontab的Form

2.1.2 Crontab Create&Update View

2.1.3 Crontab Url

2.1.4 Crontab Create&Update Template

Create和Update共用同一个template

2.1.5 页面效果

2.2 Periodic Task

有了上面的线索,我们直接调用现成的就行

2.2.1 Periodic Task Create&Update View

2.2.2 Periodic Task Url

2.2.3 Periodic Task Create&Update Template

Create和Update共用同一个template

2.2.4 页面效果



如果想赏钱,可以用微信扫描下面的二维码,一来能刺激我写博客的欲望,二来好维护云主机的费用; 另外再次标注博客原地址 itnotebooks.com 感谢!

Terraform操作阿里云ECS,批量创建ECS云主机

利用Terraform实现运维平台的IaaS层,由于公司用的全是阿里云,所以以阿里云为例,不过既然是Terraform,其实无需太在意这个,基类封装好,什么云可以,甚至...

阅读全文

error: command ‘gcc’ failed with exit status 1 -Python3.6.9 MacOs Catalina

Shell error: command 'gcc' failed with exit status 1 -Python3.6.9 MacOs Catalina 1 ...

阅读全文

消息中间件对比及选型

消息中间件: 协助程序之间异步通信 一、消息中间件的作用: 削峰填谷 异构集成 解耦 异步隔离 二、市场上在用的消息中件特点: RocketMQ:(近几年用...

阅读全文

2 条评论

  1. 请问periodictask的注册函数列表是怎么获取的?文章并没有提到,请问有源码吗?

    1. celery包中有个current_app的tasks属性是获取当前项目中所有注册的task,另外建议对页面没有太多自定义的内容的话,完全可以直接使用或继成celery包中Form类“from django_celery_beat.admin import PeriodicTaskForm“

欢迎留言