在Odoo中使用task_queue实现异步任务队列 - Oejia 技术栈,企业方案分享、Odoo顾问
Oejia 技术栈
主页
分享
微信模块
索引
关于
订阅
编辑器
登录
在Odoo中使用task_queue实现异步任务队列
admin
on 2018-07-09 13:27:09
# 概述 在 odoo 中可以用自带的cron实现异步任务,这个cron基于多线程,任务消息存储到数据库的,在一些异步任务量大、异步要求效率更高的场合其表现并不是很好,而且定义cron xml也是比较繁琐的事,这时可以用 task_queue 模块来承载,task_queue 是基于 celery实现的,性能好,海量任务的场景也能从容应对 # 项目地址 https://github.com/JoneXiong/task_queue # 安装 - pip install celery==4.1.0 - pip install sqlalchemy (如果需要存储任务执行结果的话) - pip install redis (如果使用redis作为消息存储后端) # 配置 在 odoo 的 conf 配置文件中可用的配置项: ```config # 消息存储后端 celery_broker_url = redis://localhost # 是否存储任务执行结果 celery_result_backend_db = postgresql://openerp:openerp@localhost/srm_sunwoda_180108 # 默认的队列 celery_default_queue = odoo # 可选队列 celery_queues = queue1, queue2, queue3 ``` # 使用 ```python from odoo.addons.task_queue.api import Async @Aysnc() @api.model def func(self, a, b): pass @Aysnc(queue='queue1') @api.multi def func1(self, a, b): pass @Aysnc(queue='queue2') @api.one def func2(self, a, b): pass ``` 注意:确保方法的参数均为可序列化的python内置类型 在调用前如果异步任务执行时会引用到刚变动的记录请执行下数据库 commit 使变动确实生效 多进程worker同时跑时可能会出现odoo的事务错误,建议odoo中多使用autocommit=True的模式操作数据库 # Worker的运行 参考如下task_worker.py 代码: ```python # coding=utf-8 __import__('pkg_resources').declare_namespace('odoo.addons') import odoo from odoo.cli.shell import Shell args = ['-c', 'xxx.conf'] Shell().init(args) from odoo.addons.task_queue.tasks import * ``` 启动: `celery -A task_worker worker --loglevel=info`
Information
在Odoo中使用task_queue实现异步任务队列
http://www.oejia.net/blog/2018/07/09/odoo_task_queue.html
http://www.oejia.net/raw/2018/07/09/odoo_task_queue.md
admin
on 2018-07-09 13:27:09
Category
Odoo
Tag
Related
2020-09-30 :
Odoo 小程序商城模块 Oejia_weshop v0.2.2 发布,全面支持多公司销售机制
2020-03-26 :
OE商城拼团、砍价模块
2019-12-02 :
小程序商城分销模块的使用说明
2018-12-21 :
小程序商城模块 Oejia_weshop v0.1.3 发布,支持衔接Odoo库存的能力
2018-10-18 :
微信小程序商城模块 Oejia_weshop v0.1.2 发布,支持 Odoo12
2018-02-08 :
Odoo 列表视图如何开启横向自动滚动条
2018-02-08 :
Odoo 如何隐藏超级管理员用户
2017-11-02 :
Odoo 常用的一些内置对象
2016-11-21 :
DjangoX 站点级配置介绍
2016-01-17 :
关于Django框架的ContentType模型
官方公众号
关注公众号实时咨询我们
分类
Odoo (87)
DjangoX (11)
后端HTTP (7)
YouMd (4)
移动开发 (4)
Django (4)
公告说明 (2)
JS (2)
Python (1)
前端 (1)
Nginx (1)
桌面UI (1)
March 2021
Sun
Mon
Tue
Wed
Thu
Fri
Sat
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
About This Entry
Odoo 菜单美化的扩展模块
Odoo 中的 domain 的解析及各种使用例子
About This Blog
main index
to find recently
archives
to find all
标签
微信模块
小程序商城
Python
Web
Http
Cordova
客服系统
微信客服系统
HTML5
微信客服
Markdown
解析
DjangoX
微信模块发布记录
客服工单系统
ExtJS
示例
Excel
JS
新年
PyQT
扩展开发
YouPBX
服系统
最近发布
Odoo 支付宝模块使用说明
Odoo 字段定义详解
Linux 软件源推荐
如何实现 Odoo 数据每天备份到Amazon S3存储
Odoo 如何用命令行备份还原数据
如何实现 Odoo 数据每天备份到本地存储
微信模块 Oejia_wx v0.6.3 发布,多项兼容优化,即将全面适配 Odoo14
Odoo 小程序商城模块 Oejia_weshop v0.2.2 发布,全面支持多公司销售机制
OE商城积分模块
Odoo14 相对 Odoo13 依赖库的变化
Friend Links
Oejia技术梦博客分享
YouMd,爱上MarkDown
Mole轻量级wsgi架子