Skip to content

QMT schedule_run 定时器

手册全文:QMT API

ContextInfo.schedule_run - 设置定时器

说明

  1. 该函数是新版设置定时器函数,相比旧版run_time,新版schedule_run新增了任务分组,任务取消等多种功能

原型:

python
ContextInfo.schedule_run(
    func:Callable, # 回调函数,到达定时器预定时间时触发调用,参数为ContextInfo类型,无需返回值
    time_point:Union[dt.datetime,str], # 表示预定的第一次触发时间,如果设置定时器时已经过了预定时间,会立即执行func以及后续逻辑;当使用str类型时,格式为'yyyymmddHHMMSS'如'20231231235959',需要满足转换dt.datetime.strptime('20231231235959','%Y%m%d%H%M%S')
    repeat_times:int=0, # 表示在预定时间触发后按interval间隔再触发多少次
    interval:datetime.timedelta=None, # 表示预定时间触发后的后续重复执行的时间间隔
    name:str='' # 定时器任务组名,可用于定时器分组,多次设置同名定时任务不会互相覆盖,会计入同一个任务组,按任务组名取消时会全部取消
    )

参数:

名称类型描述
funcCallable回调函数,到达定时器预定时间时触发调用,参数为ContextInfo类型,无需返回值,定义示例如下: / def on_timer(C:ContextInfo): pass
time_pointUnion[datetime.datetime,str]表示预定的第一次触发时间,如果设置定时器时已经过了预定时间,会立即执行func以及后续逻辑; / 当使用str类型时,格式为'yyyymmddHHMMSS'如'20231231235959',需要满足转换datetime.datetime.strptime('20231231235959','%Y%m%d%H%M%S')
repeat_timesint表示在预定时间触发后按interval间隔再触发多少次,传-1表示不限制次数
intervaldatetime.timedelta表示预定时间触发后的后续重复执行的时间间隔
namestr定时器任务组名,可用于定时器分组,多次设置同名定时任务不会互相覆盖,会计入同一个任务组,按任务组名取消时会全部取消

回调函数参数: ContextInfo:策略模型全局对象

返回值:

int类型,表示本次调用后生成的定时任务号,可用于取消本次定时任务,全局唯一不重复

示例:

python
import datetime as dt
def on_timer(C:ContextInfo):
    print('hello world')
def init(ContextInfo):
    tid=ContextInfo.schedule_run(on_timer,'20231231235959',-1,dt.timedelta(minutes=1),'my_timer')
def handlebar(ContextInfo):
    pass
#此例为自2023-12-31 23:59:59后每60s运行一次on_timer

开通 / 代写:关注公众号 Kimi量化