APScheduler
AScheduler是一个Python定时任务框架,使用起来十分方便。提供了基于日期,固定时间间隔及crontab类型的任务,并且可以持久化任务,并以daemon方式运行应用。
在Django使用APScheduler
安装包:
pip install apscheduler
pip install django-apscheduler
注册使用
- 在配置文件中的INSTALL_APPS中注册定时任务
- 对job的操作
- add_job():会返回一个apscheduler.job.Job的实例,可以用来改变或者移除job。
- scheduler_job():只适应于应用运行期间不会改变的job
- 移除job
- remove_job():使用jobID移除
- job.remove():使用add_job()返回实例
迁移
migrate
会生成两个表:django-apscheduler_djangojob
,django_apscheduler_djangojobexecution
,用来管理所需要的定时任务
具体实现
-
1、可能会出现异常,所以首先需要使用异常捕获
-
2、创建调度器的实例化对象
scheduler=BackgroundScheduler()
-
3、声明要使用的调度器
scheduler.add_jobstore(DjangoJobStore),"default")
-
4、使用装饰器的形式,为要定时执行的任务注册并设置循环方式,调度器,实现限制等
@register_job(scheduler, 'cron', day_of_week='mon-fri', hour='9', minute='30', second='10',id='task_time')· def test_job(): t_now = time.localtime() print(t_now)
-
5、监控任务,使用
django_apscheduler.jobstores
提供的register_events监控任务:register_events(scheduler) -
6、开启调度器:
scheduler.start()
-
7、如果报错,调度器就立即停止执行:
scheduler.shutdown()
Crontab
使用django
-
前提
django_crontab必须在Linux的crontab开启的情况下才可以使用,不然会出现不执行的情况
-
安装
pip install django-crontab
-
注册app
INSTALLED_APPS = ('django_crontab',...)
-
配置settings.py
-
启动使用
-
常见的参数
"*"表示可选的所有
"/"表示'每',比如若第一个参数为/5,就是五分钟一次