我正在尝试创建一个定期运行的任务。
我在一个名为'Data‘的目录中创建了这个文件,并将其添加到清单文件中:
<?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')
但它似乎不工作,没有打印在记录器上。有什么想法吗?
发布于 2017-11-11 17:36:52
在您的代码中添加xml <field eval="True" name="active" />
@api.model def refresh(self): _logger.info(' This is a test')
发布于 2017-11-13 18:10:29
正如@Karaka穆罕默德所说,您应该将@api.model
添加到您的方法中。然后,我将向XML添加一些属性,如args
,以指定空参数或nextcall
,您必须在其中指示cron任务第一次执行的日期。它应该是未来的日期,除非您将属性doall
设置为True (这将运行过去未执行的cron任务)。
从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">
,此处所做的更改不会在数据库中更新。因此,您可以在ir_cron
表的PostgreSQL中直接设置这些更改,也可以修改cron任务的XML,以便在下次升级模块时创建一个新的更改。
https://stackoverflow.com/questions/47231285
复制相似问题