Python定时任务框架APScheduler原理及常用代码

  

<强> APScheduler简介
  

  

在平常的工作中几乎有一半的功能模块都需要定时任务来推动,例如项目中有一个定时统计程序,定时爬出网站的URL程序,定时检测钓鱼网站的程序等等,都涉及到了关于定时任务的问题,第一时间想到的是利用时间模块的time . sleep()方法使程序休眠来达到定时任务的目的,虽然这样也可以,但是总觉得不是那么的专业,^ _ ^所以就找到了python的定时任务模块APScheduler:

  

APScheduler基于石英的一个Python定时任务框架,实现了石英的所有功能,使用起来十分方便。提供了基于日期,固定时间间隔以及crontab类型的任务,并且可以持久化任务。基于这些功能,我们可以很方便的实现一个Python定时任务系统。

  

<>强安装
  

  

1,利用脉冲进行安装
  

  

美元pip安装apscheduler
  

  

2,源码安装(https://pypi.python.org/pypi/APScheduler/)
  

  

美元python设置。py安装
  

  

APScheduler有四种组成部分:
  

  

触发器(触发)包含调度逻辑,每一个作业有它自己的触发器,用于决定接下来哪一个作业会运行。除了他们自己初始配置意外,触发器完全是无状态的。

  

作业存储(工作存储)存储被调度的作业,默认的作业存储是简单地把作业保存在内存中,其他的作业存储是将作业保存在数据库中,一个作业的数据讲在保存在持久化作业存储时被序列化,并在加载时被反序列化。调度器不能分享同一个作业存储。

  

执行器(执行者)处理作业的运行,他们通常通过在作业中提交制定的可调用对象到一个线程或者进城池来进行。当作业完成时,执行器将会通知调度器。

  

调度器(调度程序)是其他的组成部分。你通常在应用只有一个调度器,应用的开发者通常不会直接处理作业存储,调度器和触发器,相反,调度器提供了处理这些的合适的接口。配置作业存储和执行器可以在调度器中完成,例如添加,修改和移除作业。

  
  

简单应用:
  导入时间
  从apscheduler.schedulers。阻止进口BlockingScheduler
  
  def my_job ():
  打印时间。strftime (“% Y - % m - H % d %: % m: % S的,time.localtime (time.time ()))
  
  固定播送时间=BlockingScheduler ()
  固定播送时间。add_job (my_job,“时间间隔”,秒=5)
  sched.start ()
  上面的例子表示每隔5 s执行一次my_job函数、输出当前时间信息

     

<强>操作作业
  

  

1。添加作业
  

  

上面是通过add_job()来添加作业,另外还有一种方式是通过scheduled_job()修饰器来修饰函数

  
  


进口时间   从apscheduler.schedulers。阻止进口BlockingScheduler
  
  固定播送时间=BlockingScheduler ()
  
  @sched。scheduled_job(“时间间隔”,秒=5)
  def my_job ():
  打印时间。strftime (“% Y - % m - H % d %: % m: % S的,time.localtime (time.time ()))
  
  sched.start ()
  

     

2。移除作业
  

  
  

=工作调度器。add_job (myfunc“间隔”,分=2)
  job.remove ()
  #如果有多个任务序列的话可以给每个任务设置ID号,可以根据ID号选择清除对象,且删除放到开始前才有效
  固定播送时间。add_job (myfunc间隔,分钟=2,id=癿y_job_id”)
  sched.remove_job (my_job_id)
  

     

3。暂停和恢复作业
  

  

暂停作业:

  
  

apsched.job.Job.pause ()
  apsched.schedulers.base.BaseScheduler.pause_job ()
  

     

恢复作业:

  
  

apsched.job.Job.resume ()
  apsched.schedulers.base.BaseScheduler.resume_job ()
  

     

4。获得的工作列表
  

  

获得调度作业的列表,可以使用get_jobs()来完成,它会返回所有的工作实例。或者使用print_jobs()来输出所有格式化的作业列表。也可以利用get_job(任务ID)获取指定任务的作业列表

  
  

=固定播送时间工作。add_job (my_job“间隔”,秒=2,id=' 123 ')
  打印sched.get_job (job_id=' 123 ')
  打印sched.get_jobs ()
  

     

5。关闭调度器

Python定时任务框架APScheduler原理及常用代码