美文网首页
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