ODOO如何在每天的特定时间运行自动化操作

时间:2017-06-30 13:06:51

标签: cron odoo-10

我正在尝试添加一个应该每天下午12点运行的cron作业。我面临一些问题并有一些疑问。

  1. 我能够每分钟运行一次,但无法在特定时间运行它。

  2. 如何知道预期的时区以及" nextcall"中设置的时区。字段

  3. 直到我在浏览器中打开控制台才会运行。如何才能在服务器上运行并且不需要其他操作?

        <record id="ir_cron_module_get_active_sr" model="ir.cron">
            <field name="name">Get Active Srs</field>
            <field name="user_id" ref="base.user_root" />
            //<field name="interval_number">2</field>
            //<field name="interval_type">minutes</field>
            <field name="numbercall">-1</field>
            <field name="nextcall" eval="(datetime.utcnow() + timedelta(days=0)).strftime('%Y-%m-%d 12:22:00')" />
            <field name="doall" eval="True"  />
            <field name="model" eval="'sd.cron'"  />
            <field name="function" eval="'get_active_srs'" />
            <field name="args" eval="'(None,)'" />
            <field name="priority">1</field>
        </record>
    

1 个答案:

答案 0 :(得分:1)

也许你忽略了这一行:

<field name="active">True</field>

从功能上讲,您可以在Settings --> Automation --> Scheduled Actions下启用首次亮相模式进行检查。

我在你的代码中看到的是这2行没有很好的评论(你想评论它们还是复制面食错误?)

//<field name="interval_number">2</field>
//<field name="interval_type">minutes</field>

检查您是否正确运行下一次测试,在UCT时间内,您可以在终端上使用timedatectl检查linux中的UTC时间(至少在ubuntu中)

<field name="nextcall" eval="(datetime.utcnow() + timedelta(days=0)).strftime('%Y-%m-%d 12:22:00')" />

我不知道你在什么上下文中使用这个cron,但请记住模型必须是包含你正在调用的函数的模型。因此,请确保sd.cron具有方法get_active_srs

<field name="model" eval="'sd.cron'"  />

最后,如果你没有传递任何参数,你可以省略这一行

<field name="args" eval="'(None,)'" />