我正在尝试执行调度程序,但我需要在执行调度程序时在参数中传递用户ID。
<record forcecreate="True" id="ir_cron_daily_study" model="ir.cron">
<field name="name">Fetch Data</field>
<field eval="True" name="active" />
<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 name="doall" eval="False"/>
<field name="model" eval="'fetch.data'"/>
<field name="function" eval="'fetch_data'"/>
<field name="args" eval="()" />
</record>
我试图传递像
这样的args<field name="args" eval="({'check': True})" />
我收到此值但无法传递用户ID。 请帮助我在执行ir_cron job期间传递用户ID。
欢迎提出建议。
答案 0 :(得分:1)
默认情况下,ir.cron
作业使用超级用户的ID运行。检查openerp/addons/base/ir/ir_cron.py
_defaults属性。
如果您想传递用户ID,您必须:
<field name="args" eval="(uid, )" />
检查ir_cron
模型的定义,以获得进一步说明。
从我看到的情况来看,cron作业的方法总是以超级用户的id运行。
编辑:对上述内容进行更正,@ CZoellner提到您可以设置将运行cron作业的用户。尽管如此,这是一个静态变量,您无法确定谁将在运行时根据我的理解运行该作业。虽然您可以将不同的参数传递给cron作业。
感谢您更正@CZoellner