Oejia 技术栈
首页
应用市场
方案
OE学院
分享
关于
编辑器
登录
Odoo 异步任务队列 task_queue 基于 celery 的使用
admin
on 2022-02-02
### 安装 - pip install celery==4.1.0 - pip install sqlalchemy (如果需要存储任务执行结果的话) - pip install redis (如果使用redis作为消息存储后端) ### 配置 在 odoo 的 conf 配置文件中可用的配置项: ```config # 消息存储后端 celery_broker_url = redis://localhost # redis://:e342dsf342543g5454@localhost # 是否存储任务执行结果 celery_result_backend_db = postgresql://openerp:openerp@localhost/dbname # 默认的队列 celery_default_queue = odoo # 可选队列 celery_queues = queue1, queue2, queue3 ``` ### 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` 扩展参数: `celery -A task_worker worker -c 1 -n s1@saas --loglevel=info` ### beat心跳的运行 通常为一个beat多个worker 启动: `celery -A task_worker beat --loglevel=info` ### Odoo中使用 ```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的模式操作数据库
Information
Odoo 异步任务队列 task_queue 基于 celery 的使用
http://www.oejia.net/article/fe1e80ff03937d356de20bd9490809d0
http://www.oejia.net/raw/fe1e80ff03937d356de20bd9490809d0
admin
on 2022-02-02
Category
Odoo
Related
2019-11-14 :
Odoo 国内发票 OCR 导入功能介绍
2016-11-22 :
Odoo 即时消息和通知相关的模块探究
2018-10-24 :
Odoo 12 账号相关的变化
2018-03-26 :
DjangoX 相关文档
2016-04-20 :
怎么安装 yum 环境
2017-02-10 :
Odoo 开发前台页面和模板引擎的使用
2018-03-15 :
在 YouMd 中使用链接跳转的三种方式
2016-07-18 :
Nginx upstream 配置示例
2016-01-17 :
新版开启2016年新篇章
2016-03-19 :
Odoo 业务相关
官方订阅号
关注订阅实时了解我们更多分享
分类
(20)
Django (3)
DjangoX (13)
JS (2)
Nginx (1)
Odoo (135)
Python (1)
YouMd (3)
公告说明 (2)
前端 (2)
后端HTTP (7)
异常处理 (1)
桌面UI (1)
移动开发 (4)
About This Entry
用 VIM 操作 BOM 标记
Odoo PoolError
About This Blog
main index
to find recently
archives
to find all
标签
微信模块发布记录
微信模块
小程序商城
Web
Http
客服系统
OE商城
审批OA
HTML5
DjangoX
Markdown
oeshop
PyQT
YouPBX
示例
md
解析
Python
markdown
Excel
服系统
最近发布
Odoo商城模块 Oejia_weshop v1.4 发布,增加内部采购商城场景的支持!
Odoo商城模块 Oejia_weshop v1.3 发布,增加中英多语言支持及客户子账号模式!
OSError [Errno 5] Input/output error 异常处理
Odoo context 的常见使用示例
Odoo 符合国人菜单导航习惯的后台主题,支持最新的Odoo17、16等版本,支持企业版!
Odoo 官方应用市场开启 Odoo17 应用的发布!增加了行业应用专栏
Odoo商城模块 Oejia_weshop v1.2 发布,多商户、分销增强,增加商家端!
处理 Error Failed to download metadata for repo ‘appstream‘ Cannot prepare internal mirrorlist
Odoo 16 关键变化 change the term "acquirer" to "provider"
Friend Links
Oejia技术梦博客分享
YouMd,爱上MarkDown
Mole轻量级wsgi架子