【问题标题】:How to create automate tasks on Odoo 10?如何在 Odoo 10 上创建自动化任务?
【发布时间】:2017-11-10 21:19:38
【问题描述】:

我正在尝试创建一个定期运行的任务。

我在一个名为“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')

但它似乎不起作用,不会在记录器上打印。 有什么想法吗?

【问题讨论】:

    标签: python python-2.7 odoo-10 odoo


    【解决方案1】:
    1. 在你的文件中添加 xml &lt;field eval="True" name="active" /&gt;
    2. 在代码中添加 python

    @api.model def refresh(self): _logger.info(' This is a test')

    【讨论】:

      【解决方案2】:

      正如@Karaka Mohamed 所说,您应该将@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 文档的顶部设置了&lt;data noupdate="1"&gt;,因此此处所做的更改不会在数据库中更新。因此,您可以直接在 PostgreSQL 中,在ir_cron 表中设置这些更改,或者您可以修改 cron 任务的 XML ID,以便在下次升级模块时创建一个新的。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-04-20
        • 1970-01-01
        • 1970-01-01
        • 2022-11-12
        • 1970-01-01
        • 2017-12-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多