Cron 结构
<odoo>
<data noupdate="1">
<record id="ir_cron_sync_employee_data" model="ir.cron">
<field name="name">Sync Employee Data</field>
<field name="model_id" ref="model_weaver_oa_userinfo"/>
<field name="state">code</field>
<field name="code">model.sync_employee_data()</field>
<field name="interval_number">24</field>
<field name="interval_type">hours</field>
<field name="numbercall">-1</field>
<field name="doall" eval="False"/>
<field name="nextcall" eval="DateTime.now().strftime('%Y-%m-%d 02:00:00')"/>
<field name="user_id" ref="base.user_root"/>
<field name="active" eval="True"/>
</record>
</data>
</odoo>
主要字段说明:
1. 基本信息
<field name="name">Sync Employee Data</field>
<field name="model_id" ref="model_weaver_oa_userinfo"/>
name: 定时任务的名称
model_id: 指定要执行的模型
2. 执行方式
<field name="state">code</field>
<field name="code">model.sync_employee_data()</field>
-
state: 设置为 "code" 表示直接执行 Python 代码 -
code: 要执行的具体方法
3. 执行频率
<field name="interval_number">24</field>
<field name="interval_type">hours</field>
- 每 24 小时执行一次
4. 执行策略
<field name="numbercall">-1</field>
<field name="doall" eval="False"/>
-
numbercall: -1 表示无限次执行 -
doall: False 表示如果服务器关闭错过了执行时间,重启后不会补充执行错过的任务
5. 下次执行时间和执行用户
<field name="nextcall" eval="DateTime.now().strftime('%Y-%m-%d 02:00:00')"/>
<field name="user_id" ref="base.user_root"/>
-
nextcall: 设置下次执行时间为当天的凌晨 2 点 -
user_id: 指定执行任务的用户,这里使用 root 用户(admin)
user_id 的重要性:
- 权限控制:任务将以指定用户的权限级别执行
- 数据访问:只能访问该用户有权限的数据
- 记录追踪:可以追踪是哪个用户执行的任务
- 多公司环境:决定了任务在哪个公司上下文中执行
通常建议:
- 使用 base.user_root 或专门的系统用户来执行定时任务
- 确保该用户有足够的权限执行所需操作
- 在多公司环境中要特别注意用户的公司设置
版权所有:攻城狮-M的个人随笔
文章标题:Odoo中Cron定时任务的结构与关键字段解析
文章链接:http://www.alex-blog.cn/?post=8
本站文章均为原创,未经授权请勿用于任何商业用途
文章标题:Odoo中Cron定时任务的结构与关键字段解析
文章链接:http://www.alex-blog.cn/?post=8
本站文章均为原创,未经授权请勿用于任何商业用途

发表评论