odoo10-定时任务

在实际的工作中我们经常需要定时完成一些操作,odoo提供了对定时任务的支持。
示例,创建一个定时任务,每2分钟执行一次:循环遍历数据库表(res.partner)上的所有记录,并打印到控制台。
111.png
创建一个模型和视图,在视图文件act_window之前插入xml语句:

  1. <record id="peripheral_interface.synchronous_sales_bill_cron" model="ir.cron">
  2. ​ <field name="name">自动同步销货单</field>
  3. ​ <field name="user_id" ref="base.user_root"/>
  4. ​ <field name="interval_number">2</field>
  5. ​ <field name="interval_type">minutes</field>
  6. ​ <field name="numbercall">-1</field>
  7. ​ <field eval="False" name="doall"/>
  8. ​ <field eval="'peripheral_interface.synchronous_sales_bill'" name="model"/>
  9. ​ <field eval="'test_sales_bill_cron'" name="function"/>
  10. </record>

安装或更新后系统会添加自动任务
22.png

name: 定时任务名称

user_id: 执行定时任务的用户,不同的用户是有不同权限的,为了保证能有足够权限执行定时任务,一般这里就是base.user_root

interval_number: 任务执行的频次,和interval_type字段一起决定了任务执行的间隔时间,比如这里为interval_number为2,interval_type为minutes,就是任务每2分钟执行一次。

interval_type: 任务执行频次的单位,可选项有: minutes,hours,days,work_days,weeks,months,意思很好理解,work_days是星期几执行。

numbercall: 循环运行的次数,比如你填10,那么任务执行10次后将不再执行,这里-1代表一直执行下去。

doall: 如果在服务器重启期间错过了执行时机,是否再次补充执行。

model: 任务方法所在模块

function: 任务方法,与model一起决定了任务时机到来时,调用哪个方法执行。

添加任务方法:进入任务方法所在模块。添加任务方法:

  1. # 测试自动同步任务
  2. ​ def test_sales_bill_cron(self):
  3. ​ partner = self.env['res.partner'].sudo().search([])
  4. ​ for par in partner:
  5. ​ print par.name
Last modification:January 9th, 2019 at 11:57 am
If you think my article is useful to you, please feel free to appreciate

Leave a Comment