我正在尝试添加一个应该每天下午12点运行的cron作业。我面临一些问题并有一些疑问。
我能够每分钟运行一次,但无法在特定时间运行它。
如何知道预期的时区以及" nextcall"中设置的时区。字段
直到我在浏览器中打开控制台才会运行。如何才能在服务器上运行并且不需要其他操作?
<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>
答案 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,)'" />