美文网首页
APScheduler 学习心得

APScheduler 学习心得

作者: Sdoopy | 来源:发表于2019-01-22 18:54 被阅读0次

这两天因为项目需要用到任务调度,调研了一下认为APScheduler 是比较适合的。没有celery那么重,也能覆盖大部分的需求,可以持久化任务,也可以添加删除任务,因此选用了APScheduler。

根据官方文档,整理了一下心得。

启动

1.一旦启动了scheduler,你就不再能对scheduler的配置进行修改。

添加任务

1.如果你的任务是持久化的,那么你一定要给job设置ID,并且在add_job()时使用replace_existing=True,否则在你每次应用重启的时候将会得到一个新的job副本。如果你设置了ID,却没有使用replace_existing=True ,那么会造成,当添加重复ID的任务时,程序报错。

2.如果想要立即启动任务,可以在add_job()时提交trigger参数

删除任务

1.两种删除任务的方法中,推荐根据id删除。scheduler.remove_job('my_job_id')

暂停、重启任务

1. 获取job实例。使用pause()

2. 获取job实例。使用resume()


想要在Flask中使用APScheduler,结果发现无法使用,查找了大量资料发现官方资料中已做出说明,

官方说Flask-APScheduler也许有用也许没用。也是很调皮了。

使用了一下,发现很好用,如果碰到多模块、使用数据库问题,看这篇https://blog.csdn.net/arnolan/article/details/84936075

Flask-APScheduler 还直接提供API,只要在配置文件里面配置SCHEDULER_API_ENABLED =True 就行

API如下:

self._add_url_route('get_scheduler_info', '', api.get_scheduler_info, 'GET')

self._add_url_route('add_job', '/jobs', api.add_job, 'POST')

self._add_url_route('get_job', '/jobs/<job_id>', api.get_job, 'GET')

self._add_url_route('get_jobs', '/jobs', api.get_jobs, 'GET')

self._add_url_route('delete_job', '/jobs/<job_id>', api.delete_job, 'DELETE')

self._add_url_route('update_job', '/jobs/<job_id>', api.update_job, 'PATCH')

self._add_url_route('pause_job', '/jobs/<job_id>/pause', api.pause_job, 'POST')

self._add_url_route('resume_job', '/jobs/<job_id>/resume', api.resume_job, 'POST')

self._add_url_route('run_job', '/jobs/<job_id>/run', api.run_job, 'POST')

需要加上默认的前缀 /schedule,当然修改也是可以的,配置文件里面配置SCHEDULER_API_PREFIX ='/your_path' 就行

动态添加任务

可以参看https://www.jianshu.com/p/2628f566b31c

相关文章

网友评论

      本文标题:APScheduler 学习心得

      本文链接:https://www.haomeiwen.com/subject/xvfrjqtx.html