为什么要使用定时任务
定时任务相当于我们平时使用的闹钟,定时任务可以自动完成操作命令,定时备份系统数据等
定时任务是按照指定时间周期运行的短任务。使用场景为在某个固定时间点,为所有运行中的节点做时间同步。
定时任务是基于时间控制的短时任务(Job),类似于Linux系统的crontab文件中的一行,在指定的时间周期运行指定的短时任务。
· 在给定时间点只运行一次。
· 在给定时间点周期性地运行。
定时任务可以在一定程度上可以帮我们简化一些功能,节省一些时间,在此处我们就使用一个较为简单的方法来实现django的定时任务:基于celery异步任务实现django的定时任务
为什么要使用celery实现定时任务?
celery 是python 世界中最有名的开源消息队列框架。
它的优势在于性能高,吞吐量大;配置灵活,简单易用;文档齐全,配套完善。
Celery 通过消息进行通信,通常使用经纪人在 beats 和 workers 之间进行调解。要启动一个任务,beat会在队列中放入一条消息,然后经纪人将消息传递给workers。
一个Celery系统可以由多个broker和worker组成,从而实现高可用性和横向扩展。
而且celery实现定时任务更加的简单,只需要在异步任务的基础的基础之上增加一些代码即可
下边是我的cerlery的目录结构
config里边就是一些基础的配置:包括存储的redis路径、所在地区的时区时间以及导入指定的任务模块,在这里我实例化的对象为celery_app所以在后边调用的时候也使用的celery_app,实例化对象的名称可以根据自己的喜好进行设置,但是要注意前后一致以及通俗易懂
BROKER_URL = 'redis://127.0.0.1/11'
CELERY_RESULT_BACKEND = 'redis://127.0.0.1/12'
# 时区
CELERY_TIMEZONE = 'Asia/Shanghai'
# 导入指定的任务模块
CELERY_IMPORTS = (
'celery_task.tasks',
)