odoo 定時任務的使用方法

2021-08-04 22:49:35 字數 2622 閱讀 3105

編寫openerp模組**,在模組**中編寫執行程式! 此處為了方便,只是做了簡單的列印輸入, **如下:

# -*- coding: utf-8 -*-

from openerp.osv import osv

class

task_test

(osv.osv):

_auto = false

_name = "task.test"

defrun_scheduler

(self, cr, uid, args,context=none):

print

"test scheduler"

在模組中申明乙個***_data.xml檔案,***可以不為模組名稱,然後在openerp.py 檔案中的data屬性中加入***_data.xml即可,***_data.xml檔案的配置內容如下:

<?xml version="1.0" encoding="utf-8"?>

noupdate="1">

forcecreate="true"

id="ir_cron_scheduler_action"

model="ir.cron">

name="name">run mrp schedulerfield>

eval="true"

name="active"/>

name="user_id"

ref="base.user_root"/>

name="interval_number">1field>

name="interval_type">minutesfield>

name="numbercall">3field>

eval="false"

name="doall"/>

eval="'task.test'"

name="model"/>

eval="'run_scheduler'"

name="function"/>

eval="'(true,)'"

name="args"/>

record>

data>

openerp>

配置引數說明

從上面我們可以看到配置的這個***_data.xml檔案在檔案的第4行配置了model="ir.cron"那麼我們在oe中開啟modelir_cron可以看到該class的_columns有如下字段:

_columns =
ir_cron模組中主要有三個主要的方法分別為:_callback_process_job_acquire_job,在server.py檔案中有如下的python**:

def

cron_thread

(self, number):

while

true:

time.sleep(sleep_interval + number) # steve reich timing style

registries = openerp.modules.registry.registrymanager.registries

_logger.debug('cron%d polling for jobs', number)

for db_name, registry in registries.items():

while

true

and registry.ready:

acquired = openerp.addons.base.ir.ir_cron.ir_cron._acquire_job(db_name)

ifnot acquired:

break

到此呼叫過程就清楚了,server先呼叫_acquire_job方法,_acquire_job會根據dbname獲取任務執行的相關資料、例如獲取資料操作cr物件,要執行的jobs等,例如:

db = openerp.sql_db.db_connect(db_name)

threading.current_thread().dbname = db_name

cr = db.cursor()

,這個**又幫我們了解到了如何獲取資料庫的cr物件。_acquire_job獲取相關資料之後,然後交給_process_job方法,該方法會去更新任務的下一次執行時間等資料,然後交由_callback方法,有興趣的可以去讀一下ir_cronserver的原始碼。

Odoo定時任務 自動任務)

odoo中內建了乙個定時任務模型 ir.cron 它定義了一套 定時 自動 執行的規則。我們可以建立 ir.cron 的模型記錄,一條記錄就是乙個定時任務。1 前置準備 在業務模型中定義要定時執行的函式 這個就是一般資料模型的函式定義,沒什麼不同的。2 通過data檔案,建立一條定時任務記錄 往ir...

Spring Boot定時任務的使用方法

scheduled 定時任務器 是 spring3.0 以後自帶的乙個定時任務器。引入spring座標 org.springframeworkgroupid spring context supportartifactid dependency 啟動類上開啟定時任務的使用 enableschedul...

Spring定時任務的多種使用方法總結

這裡使用的是spring2.5,需要的jar包 spring.jar spring2.5的完全包 quartz all 1.6.0.jar 還需commons jar。方法一 任務排程工作類 public class clock extends timertask 應用上下文xml中的具體配置如下 ...