一、背景

用过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 感谢!

基于阿里云SDK获取账户下所有RDS实例及其详细信息

1. 安装阿里云云数据库RDS管理模块 参考:https://develop.aliyun.com/tools/sdk?spm=a2c4g.11186623.2.7.12166a5f83CpOs#/python Pyth...

阅读全文

基于阿里云SDK获取账户下所有ECS实例及其详细信息

1. 安装阿里云云主机ECS管理模块 参考:https://help.aliyun.com/document_detail/25699.html?spm=a2c4g.11174283.2.52.119052feDvILXq ...

阅读全文

基于阿里云SDK获取账户下所有域名的解析记录

1. 安装阿里云云解析管理模块 参考:https://develop.aliyun.com/tools/sdk/?spm=a2c4g.11186623.2.9.249c37b4WNVPv8#/python Python ...

阅读全文

2 条评论

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

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

欢迎留言