首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在Odoo 10上创建自动化任务?

如何在Odoo 10上创建自动化任务?
EN

Stack Overflow用户
提问于 2017-11-11 05:19:39
回答 2查看 440关注 0票数 1

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

我在一个名为'Data‘的目录中创建了这个文件,并将其添加到清单文件中:

代码语言:javascript
运行
复制
<?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>

我在这个模型上使用了以下方法

代码语言:javascript
运行
复制
def refresh(self):
    _logger.info(' This is a test')

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

EN

回答 2

Stack Overflow用户

发布于 2017-11-11 17:36:52

在您的代码中添加xml <field eval="True" name="active" />

  • Add文件

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

票数 2
EN

Stack Overflow用户

发布于 2017-11-13 18:10:29

正如@Karaka穆罕默德所说,您应该将@api.model添加到您的方法中。然后,我将向XML添加一些属性,如args,以指定空参数或nextcall,您必须在其中指示cron任务第一次执行的日期。它应该是未来的日期,除非您将属性doall设置为True (这将运行过去未执行的cron任务)。

nextcall日期开始,您的cron任务将永远每分钟执行一次(正如您在定义中指定的那样)。

例如,使用此行,您的任务将在生成任务五分钟后第一次执行:

代码语言:javascript
运行
复制
<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,以便在下次升级模块时创建一个新的更改。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47231285

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档