Se você estiver desenvolvendo um módulo e precisar dessa funcionalidade, você vai precisar duas coisas
Primeira: Dentro do xml de seu módulo criar um record do modelo ir.cron, abaixo disponibilizei um exemplo. Você deve especificar o model, e a função que vai ser executada.
Com interval_number e interval_type você configura a frequência de execução da sua tarefa. O type pode ser: (minutes, hours, days, weeks, months, years)
Pode utilizar também o parâmetro args para passar parâmetros ou seja pode criar vários registros que chamam o mesmo método mas passar parâmetros diferentes. Ex: <field name="args" eval="'(1,False,)'" />
<?xml version="1.0" encoding="UTF-8"?> <openerp> <data> <record forcecreate='True' id='ir_cron_send_changes_to_message_queue' model='ir.cron'> <field name="name">Run Schedule to get changes in ERP and send to MQ</field> <field name="active" eval='True' /> <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 name="doall" eval='False' /> <field name="model" eval="'modulo.times'" /> <field name="function" eval="'send_changes_to_rabbitmq'" /> <field name="args" eval="'()'" /> </record> </data> </openerp>O Segundo é definir dentro do seu objeto o evento com o mesmo nome que você definiu no xml. A assinatura dele deve ter no minimo 3 parâmetros (self, cr, uid), caso você passe no args do xml algum parâmetro lembre-se de acrescentar o parâmetro ao método, pois como é um método que roda no servidor, você não terá indicação de que ocorreu erro, apenas olhando no log.
cr - cursor usado para conectar ao banco de dados
uid - Id do usuário atual - configurado no xml.
def send_changes_to_rabbitmq(self, cr, uid, ids=None): pass
É isso, no lugar do pass você coloca seu código do que precisa ser feito.
Nenhum comentário:
Postar um comentário