odoo与异步任务神器celery集成
来源:互联网 发布:平安知鸟考试答案技巧 编辑:程序博客网 时间:2024/05/12 03:02
源码地址:https://github.com/sunliang1163/celery-odoo
背景:公司ODOO运行一年多,随着业务不断迭代,定时任务运行不很稳定,再加上解耦的需要,偶然看到神器celery,便想到odoo与celery结合, 在github看到celery-odoo这个工程,为了自己的业务需要,进行了改造。一 、 准备工作 1、安装redis,如 redis://192.168.1.58:6379/ 2、pip install 'celery[redis]' 3、安装celery_queue模块,我的物理路径是/data/rcerp/odoo8/openerp/hxy_addons/celery_queue 4、启动celery work1)配置PYTHONPATH环境变量,指定odoo的根目录,也就是openerp的上一级目录;以及celery_queue目录的上一级目录
export PYTHONPATH="/data/rcerp/odoo8:/data/rcerp/odoo8/openerp/hxy_addons"
2)进入celery_queue目录的上一级目录中,启动work
cd /data/rcerp/odoo8/openerp/hxy_addons
nohup celery -B -A celery_queue worker -c 1 -Q openerp >>/data/rcerp/celery_console.log &
二、如何使用
1、普通方法调用
from openerp.hxy_addons.celery_queue.decorators import CeleryTask @CeleryTask() def do_run_compute_stock_amount_qty_task(self, cr, uid, ids, context=None): print '1234567890' return True
1)导入CeleryTask
2)添加装饰器@CeleryTask()
2、定时任务调用
1)配置CELERY_IMPORTS = ( # 指定导入的任务模块 'celery_queue.schedule_task.task_1', 'celery_queue.schedule_task.task_2' ) #schedules CELERYBEAT_SCHEDULE = { 'add-every-30-seconds': { 'task': 'celery_queue.schedule_task.task_1.execute', 'schedule': timedelta(seconds=30), # 每 30 秒执行一次 'args': () # 任务函数参数 }, 'multiply-at-some-time': { 'task': 'celery_queue.schedule_task.task_2.multiply', 'schedule': crontab(hour=11, minute=25), # 每天早上 11 点 25 分执行一次 'args': (3, 7) # 任务函数参数 } }
2)写具体方法,如task_1.py文件。注意该文件中装饰器名称为@celery.task,以防与@CeleryTask()混淆。
定时任务执行只支持单个DB,多个DB执行的方法还未想到解决办法。
附脚本:
1、配置环境变量
[rcerp@iZ258dzcy2jZ ~]$ more .bash_profilePYTHONPATH="/data/rcerp/odoo8"export PYTHONPATH
2、启动celery work
more start_celery.sh#!/bin/bashcd /data/rcerp/odoo8/openerp/hxy_addonsnohup celery -B -A celery_queue worker -c 1 -Q openerp >>/data/rcerp/celery_console.log &
水平有限,有讲不清楚或者不完善的地方欢迎批评
参考文档:http://python.jobbole.com/87086/
0 0
- odoo与异步任务神器celery集成
- 异步任务神器 Celery
- 异步任务神器 Celery
- 异步任务神器 Celery 简明笔记
- 异步任务神器 Celery 快速入门
- 异步任务神器 Celery 快速入门教程
- celery 异步任务队列
- Django中异步任务celery
- 异步任务 Celery 简明笔记
- 安装使用celery异步任务
- Python Celery 实现异步任务
- django下使用celery进行异步任务
- Django之celery分布式异步任务队列
- Django 使用celery做异步任务处理
- Celery+django+redis异步执行任务
- Celery+python+redis异步执行定时任务
- 异步任务利器Celery(一)介绍
- 异步任务利器Celery(一)介绍
- GUI470不能使用快捷登录,修改注册…
- SAP Smartforms实现二维条码打印
- Smartform 打印二维码 …
- Switching the Modifica…
- 测试BAPI ,执行test sequence
- odoo与异步任务神器celery集成
- 通过一个链接打开本地app,或者去下载app
- java 多线程基础
- ES参考之Query DSL
- >LINK : fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏
- 个人模板记录II♪(^∇^*)♪(^∇^*)♪(^∇^*)
- Hive安装部署
- Dagger2注入原理
- [poj2142] 天平The Balance