如何在Odoo 10创建自动执行任务?
问题描述:
我试图创建一个运行periodicaly任务。如何在Odoo 10创建自动执行任务?
我做了一个名为“数据”目录中找到此文件,并将它添加到清单文件:
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data noupdate="1">
<record id="ir_cron_scheduler_action" model="ir.cron">
<field name="name">scheduler</field>
<field name="user_id" ref="base.user_root"/>
<field name="interval_number">1</field>
<field name="interval_type">minutes</field>
<field name="numbercall">-1</field>
<field eval="False" name="doall"/>
<field eval="'res.company'" name="model"/>
<field eval="'refresh'" name="function"/>
</record>
</data>
,我对这种模式
def refresh(self):
_logger.info(' This is a test')
以下方法但它似乎不工作,不打印在记录器上。 任何想法?
答
- 添加在您XML文件的
<field eval="True" name="active" />
- 添加在你的代码的Python
@api.model def refresh(self): _logger.info(' This is a test')
答
正如@Karaka穆罕默德说,你应该添加@api.model
到你的方法。然后,我将一些属性添加到XML像args
,指定空参数,或nextcall
,中,你必须要指出的cron任务的第一个执行日期。这应该是一个将来的日期,除非你的属性doall
设置为真(这将运行在过去的未执行的后台任务)。
从这nextcall
日期,您的cron任务将每分钟执行永远(如你在定义中指定)。
一个例子,这条线你的任务将是第一次五分钟后执行生成:
<field name="args" eval="'()'"/>
<field name="nextcall" eval="(DateTime.now() + timedelta(minutes=5)).strftime('%Y-%m-%d 00:00:00')" />
警告:因为你已经在你的XML文档的顶部设置<data noupdate="1">
,此处所做的更改不会在数据库中更新。所以,你可以在PostgreSQL中直接设置这些变化,在ir_cron
表,或者你可以修改的cron任务的XML ID,以创建一个新的下列时间您升级模块。