2017-11-10 6 views
1

私は定期的に実行されるタスクを作成しようとしています。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') 

に次のメソッドを持っていますしかし、それは動作していないようだ、ロガーに印刷されません。 アイデア? @Karakaモハメドとして

答えて

2
  1. あなたに追加のXMLファイル<field eval="True" name="active" />
  2. あなたのコードのpythonで追加

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

1

あなたの方法に@api.modelを追加する必要があり、と述べました。そして、空の引数を指定するためにargsのようなXMLにいくつかの属性を追加するか、またはnextcallを追加して、cronタスクの最初の実行日を指定する必要があります。 doallTrueに設定しない限り、将来の日付にする必要があります(過去の実行されていないcronタスクが実行されます)。

日付がnextcall日から、あなたの定義で指定したとおり、あなたのcronタスクは毎分永遠に実行されます。

たとえば、この行であなたのタスクは5分に生成された後に初めて実行されます。

<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を変更して、モジュールを次回にアップグレードするときに新しいIDを作成することができます。

関連する問題