2017-11-10 12 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') 

에 다음과 같은 방법 하지만 그것은 작동하지 않는 것 같아요, 로거에 인쇄하지 않습니다. 아이디어가 있으십니까? 당신이 XML을 <field eval="True" name="active" />

  • 파일에

  • 답변

    2
    1. 는 @Karaka 모하메드, 당신은 당신의 방법에 @api.model를 추가해야합니다 말했듯이 코드를 파이썬

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

    1

    에 추가합니다. 그런 다음 XML에 args과 같은 일부 특성을 추가하거나 빈 인수를 지정하거나 nextcall을 추가하여 cron 작업의 첫 번째 실행 날짜를 지정해야합니다. doallTrue로 설정하지 않는 한 미래 날짜 여야합니다. (과거의 실행되지 않은 cron 작업이 실행 됨).

    날짜가 nextcall 일부터 귀하의 cron 작업이 1 분마다 영원히 실행됩니다 (귀하가 정의한대로). 귀하의 작업 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를 만들 수 있습니다.