odoo 使用协程,异步,gevent,打补丁

Posted qianxunman

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了odoo 使用协程,异步,gevent,打补丁相关的知识,希望对你有一定的参考价值。

打补丁得时候需要在方法中实现,如果直接在外部调用猴子补丁,在odoo服务启动时,就会出现锁异常,会出现死锁,

错误的示范:


from odoo import api, fields, models
from dateutil.relativedelta import relativedelta

from ..controllers.cls_get_trans_info import SpiderTrans

from odoo import exceptions
import gevent
import logging
from gevent import monkey
monkey.patch_all() # 这是一个错误的示例

class ClassName(models.Model):
    _name = 'model.name'
    ...

正确的示范:

from odoo import api, fields, models
from dateutil.relativedelta import relativedelta

from ..controllers.cls_get_trans_info import SpiderTrans

from odoo import exceptions
import gevent
import logging
from gevent import monkey
monkey.patch_all() # 这是一个错误的示例

class ClassName(models.Model):
    _name = 'model.name

    field_name= fields.Char()

    def func(self):
        monkey.patch_all() #猴子补丁需要在该位置调用
        

以上是关于odoo 使用协程,异步,gevent,打补丁的主要内容,如果未能解决你的问题,请参考以下文章

基础入门_Python-模块和包.Gevent异步/状态获取/超时设置/猴子补丁?

gevent协程之猴子补丁带来的坑

python协程初步--gevent库使用以及解释什么是猴子补丁monkey_patch

Python协程之Gevent

python中的协程

线程池+协程+gevent模块