Oejia 技术栈
首页
分享
微信模块
关于
编辑器
登录
在Odoo中使用task_queue实现异步任务队列
admin
on 2018-07-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/article/6629fba1c76fe0c383b063f940f5d665
http://www.oejia.net/raw/6629fba1c76fe0c383b063f940f5d665
admin
on 2018-07-09
Category
Odoo
Related
2021-08-31 :
Odoo 小程序商城多店铺版基本介绍
2019-03-25 :
Odoo 基于企业微信实现的自建应用审批流功能的配置及使用说明
2022-06-30 :
OE会员模块
2021-12-27 :
商城——多门店
2018-03-23 :
Celery 常用命令
2022-04-29 :
微信模块 Oejia_wx v0.6.6 发布,优化扫码事件处理及通讯录变更的同步
2018-03-23 :
Celery 配置项大全
2016-01-19 :
在 Odoo 中嵌入iframe页的方法
2022-09-05 :
Odoo 企业微信之日历、日程的同步
2019-11-27 :
YouPBX 安装部署基本说明
分类
(23)
Django (3)
DjangoX (13)
JS (2)
Nginx (1)
Odoo (126)
Python (1)
YouMd (3)
公告说明 (2)
前端 (2)
后端HTTP (7)
异常处理 (1)
桌面UI (1)
移动开发 (4)
官方公众号
关注公众号实时咨询我们
About This Entry
Odoo 微信模块企业版
Odoo 菜单美化的扩展模块
About This Blog
main index
to find recently
archives
to find all
标签
微信模块发布记录
微信模块
小程序商城
Web
Http
客服系统
HTML5
审批OA
OE商城
Markdown
DjangoX
oeshop
服系统
解析
Excel
YouPBX
markdown
PyQT
md
Python
示例
最近发布
处理 Error Failed to download metadata for repo ‘appstream‘ Cannot prepare internal mirrorlist
Odoo 16 关键变化 change the term "acquirer" to "provider"
企业微信错误码 81013 的排查与处理
Odoo商城模块 Oejia_weshop v1.1 发布,支持Odoo16及下单子账号特性
微信模块 Oejia_wx v0.6.7 发布,支持 Odoo16 及新的Websocket消息模式
Odoo16 开启客屏时如何实现在POS设备上自动打开到第二屏
Odoo生产环境需要注意或修改的一些关键配置项
Odoo 更灵活的对账、付款及客户余额的介绍
Odoo16 SyntaxError
Friend Links
Oejia技术梦博客分享
YouMd,爱上MarkDown
Mole轻量级wsgi架子