Celery:非常强大的分布式任务调度框架
:基于Redis的作业队列工具
:一款强大的任务调度工具
基类:BaseScheduler可以通过此类查询相关。
方式二、三:略请看官网
通过调用start()方法来启动
内置以下三种触发器实现:
date: 对已仅执行一次的情绪,指定某个之间点请参考
cron: 使用cron风格表达式周期性执行。请参考
除了Memory方式不需要序列化之外(一个例外是使用ProcessPoolExecutor)其余都需要作业函数参数可序列化。
如果需要存储作业而且每次启动时你的应用都会重新添加一遍作业,那么请在添加job时指定一个唯一的ID
以及指定replace_existing=True
,否则每次启动应用都会添加一次job的副本
如果需要立即启动该任务,请在添加job时指定trigger参数
注意:如果任务已经调度完毕,并且之后也不会再被执行的情况下会被自动移除。
限制同一个job实例的并发执行数
默认情况下同一个job只允许一个job實例运行。这在某个job在下次运行时间到达之后仍未执行完毕时能达到控制的目的。你也可以该变这一行为在你调用add_job时可以传递max_instances
=5来运行哃时运行同一个job的5个job实例。
一个job可能由于某些情况错过执行时间,比如上一点提到的或者是线程池或进程池用光了,或者是当要调度job时突然down机了等。
这时可以通过设置job的misfire_grace_time选项来指示之后尝试执行的次数
当然如果这不符合你的期望,你可以合并所有错过时间的job到一个job来执荇通过设定job的coalesce=True
。
可以监听调度、任务执行情况相关的事件
有木有非常强大,又非常易于理解的感觉Good Job!