2016-08-23 2 views
0

Я создал запланированную задачу, а в локальном хосте планировщик с функцией работает нормально. На сервере я устанавливаю Number of Calls = 10, Interval Unit = Minutes и Interval Number = 1Openerp Schdular выполнить сразу

Проблема заключается в том, что сервер запускается после определенных обновлений, только через одну минуту количество вызовов отображается как 0 вместо 9

Пожалуйста, помогите мне с этим

Функция

def allocate_on_probations(self, cr, uid, ids,tl, context=None): 

     allo=0 
     state='active' 
     result = {} 


     emps=self.pool.get('hr.employee').search(cr, uid, [('current_status','=','active')], context=context) 
     if emps: 

      for r in emps: 
       hol_state=2 
       gt_dt=cr.execute("""SELECT appointed_date FROM hr_employee WHERE id= %d order by id"""%(r)) 
       gt_dd=cr.fetchone()[0] 

       #getting today details 
       today = datetime.datetime.now() 
       tt=today.date() 
       td=tt.day 
       tm=tt.month 
       ty=tt.year 

       #getting appointment date details 
       app=datetime.datetime.strptime(gt_dd, "%Y-%m-%d").date() 
       #print app 
       ay=app.year 
       am=app.month 
       ad=app.day 

       if ay==ty: 
        #compairing today and appointed date 
        comp=(tt-app) 
        chat=int(comp.days) 
        chat_mod=chat%30 
        print chat_mod 
        print r 

        if chat_mod==29: 
         hol_obj=self.pool.get('hr.holidays') 
         print hol_obj 
         condition_1=[('employee_id','=',r),('type','=','add'),('holiday_status_id','=',hol_state)] 
         hol_emp=hol_obj.search(cr, uid,condition_1, context=context) 

         if hol_emp: 

          for n in hol_emp: 
           hol_dt=cr.execute("""SELECT number_of_days_temp FROM hr_holidays WHERE id= %d order by id"""%(n)) 
           hol_dd=cr.fetchone()[0] 
           hol_inc=(hol_dd+0.5) 

           print hol_inc 
           cr.execute("""UPDATE hr_holidays SET number_of_days_temp= %d WHERE id= %d"""%(hol_inc,n)) 
           cr.execute("""UPDATE hr_holidays SET number_of_days= %d WHERE id= %d"""%(hol_inc,n)) 




     return True 

XML Планировщик вызовов

<record id="ir_cron_scheduler" model="ir.cron"> 
      <field name="name">Casual Leave Allocation</field> 
      <field name="interval_number">1</field> 
      <field name="interval_type">minutes</field> 
      <field name="numbercall">10</field> 
      <field eval="False" name="doall"/> 
      <field eval="'hr.holidays'" name="hr.holidays"/> 
      <field eval="'allocate_on_probations'" name="allocate_on_probations"/> 
      <field eval="'()'" name="args"/> 
     </record> 

UI enter image description here

enter image description here

+0

Вы сделали это через xml или с ui? – danidee

+0

Первоначально я вызываю планировщик из xml, а затем просто изменяю аргументы с помощью ui –

+0

Затем вставьте свой код, как для планировщика, так и для функции, которую вы используете, будет легче отлаживать этот способ. – danidee

ответ

1

Проблема вы испытываете это с Repeat missed

Когда вы установите его, правда, это означает, что пропущенные действия, которые были пропущены, когда сервер был вниз должен быть выполняется, когда сервер перезапускается, поэтому, если сервер был отключен не менее 10 минут, при перезапуске все действия, которые были пропущены в течение этого периода, будут выполнены как можно скорее. поэтому не снимите галочку, что вариант, на самом деле это False в коде (просто обновить модуль для переопределения параметра в пользовательском интерфейсе)

вы можете также установить аргумент, который вызывает функцию из XML

<field eval="'(True,)'" name="args"/>

+0

Большое спасибо danidee ... это сработало –

Смежные вопросы