odoo设置定时任务有两种方式
1、web界面
可用通过“设置”=> "技术” =>“自动化”=>“安排的动作” 进行手工设置。
2、xml文件
<record model="ir.cron" id="hx_hr_update_person">
<field name="name">从OA同步人员数据</field>
<field name="model_id" ref="hr.model_hr_employee"/>
<field name="state">code</field>
<field name="code">model.update_all_person()</field>
<field name="active" eval="True"/>
<field name="interval_number">1</field>
<field name="interval_type">days</field>
<field name="numbercall">-1</field>
<field name="doall" eval="False"/>
<field name="user_id">2</field>
<field name="nextcall" eval="(DateTime.now().replace(hour=17, minute=10) + timedelta(days=1)).strftime('%Y-%m-%d %H:%M:%S')" />
</record>
可以通过xml文件和web界面进行比较来加深理解。
3、踩过的坑
3.1 任务执行时间过长,超出odoo限制
超出限制后任务停止并且数据库事务也会回滚,然后服务重启。
2023-09-21 09:05:46,274 18071 WARNING odoo4 odoo.service.server: Thread <Thread(odoo.service.http.request.140570311779904, started 140570311779904)> virtual real time limit (176/120s) reached.
2023-09-21 09:05:46,274 18071 INFO odoo4 odoo.service.server: Dumping stacktrace of limit exceeding threads before reloading
可用修改配置参数
limit_time_real = 1800