2017-11-10 148 views
1

我試圖創建一個運行periodicaly任務。如何在Odoo 10創建自動執行任務?

我做了一個名爲「數據」目錄中找到此文件,並將它添加到清單文件:

<?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') 

以下方法但它似乎不工作,不打印在記錄器上。 任何想法?

回答

2
  1. 添加在您XML文件的<field eval="True" name="active" />
  2. 添加在你的代碼的Python

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

1

正如@Karaka穆罕默德說,你應該添加@api.model到你的方法。然後,我將一些屬性添加到XML像args,指定空參數,或nextcall,中,你必須要指出的cron任務的第一個執行日期。這應該是一個將來的日期,除非你的屬性doall設置爲(這將運行在過去的未執行的後臺任務)。

從這nextcall日期,您的cron任務將每分鐘執行永遠(如你在定義中指定)。

一個例子,這條線你的任務將是第一次五分鐘後執行生成:

<field name="args" eval="'()'"/> 
<field name="nextcall" eval="(DateTime.now() + timedelta(minutes=5)).strftime('%Y-%m-%d 00:00:00')" /> 

警告:因爲你已經在你的XML文檔的頂部設置<data noupdate="1">,此處所做的更改不會在數據庫中更新。所以,你可以在PostgreSQL中直接設置這些變化,在ir_cron表,或者你可以修改的cron任務的XML ID,以創建一個新的下列時間您升級模塊。