- 定时任务模型
DTCloud 中内置了一个定时任务模型 ir.cron,它定义了一套定时、自动执行的规则。我们可以创建 ir.cron 的模型记录,一条记录就是一个定时任务。 - 创建定时记录
(1)前置准备:在业务模型中定义要定时执行的函数,即一般数据模型的函数定义;
(2)通过 data 文件,创建一条定时任务记录(往 ir.cron 模型插入一条记录)
<record id="ir_cron_scheduler_XXX" model="ir.cron">
<field name="name"></field>
<field name="user_id" ref="base.user_root"/>
<field name="interval_number"></field>
<field name="interval_type"></field>
<field name="numbercall"></field>
<field name="doall" eval="False" />
<field name="model" eval="要定时运行的函数所在模型名"/>
<field name="function" eval="'要定时执行的函数名'" />
</record>
字段详解:
1)name
定时任务名称。
2)user_id
执行定时任务的用户;不同的用户是有不同权限的,为了保证能有足够权限执行定时任务,一般这里就是 base.user_root
3)interval_number
任务执行的频次,和 interval_type 字段一起决定了任务执行的间隔时间,比如 interval_number 为 2,interval_type 为 minutes,就是任务每 2 分钟执行一次。
4)interval_type
任务执行频次的单位,包括:minutes,hours,days,work_days,weeks,months。意思很好理解,work_days 是星期几执行。
5)numbercall
循环运行的次数,比如你填 10,那么任务执行 10 次后将不再执行,这里-1 代表一直执行下去。
6)doall
如果在服务器重启期间错过了执行时机,是否再次补充执行。
7)model
任务方法所在模型。
8)function
任务方法,与 model 一起决定了任务时机到来时,具体调用哪个模型的哪个方法执行。