定时任务和周期任务在我们日常工作中应用广泛,例如定时发布、周期巡检等,通常我们会借助Linux下的Crontab来实现,但如何将这一功能搬进我们自研的运维系统呢?借助django-celery即可轻松完成,本篇文章就通过自定义任务引擎Probius中计划任务的实现来介绍django-celery的使用
![e0078711097ee4f318642173f445705a.gif](https://img-blog.csdnimg.cn/img_convert/e0078711097ee4f318642173f445705a.gif)
Celery是基于Python开发的一个分布式任务队列框架,主要用来实现异步任务,具体介绍和用法可以看我之前写的这篇文章:Django配置Celery执行异步任务和定时任务,Django本身不支持异步,要想实现异步的话借助Celery是个不错的选择,上边这篇文章就提供了django集成celery的方法,但其配置稍微复杂,且不支持动态添加定时任务,django-celery的出现很好的解决了这个问题
django-celery为django提供了celery集成,同时支持将结果存储在django的orm或cache中,最重要的是支持从数据库动态读取计划任务并执行,这也就是说我们只需要将需要执行的加护任务插入数据库,django-celery就可以自动发现并执行了,接下来就具体看下如何实现
安装配置
1. 安装django-celery
pip install django-celery
2. settings.py
的INSTALLED_APPS
中加入djcelery
INSTALLED_APPS = [
...
'djcelery',
]
3. settings.py
中添加如下配置
import djcelery
djcelery.setup_loader()
# BROKER和BACKEND配置,这里用了本地的redis,其中1和2表示分别用redis的第一个和第二个db
BROKER_URL = 'redis://localhost/1'
CELERY_RESULT_BACKEND &