from odoo import api, models, _
from concurrent.futures import ThreadPoolExecutor, as_completed
Se define un modelo con dos metodos:
class Report(models.AbstractModel):
def long_time_method(self,parm1, parm2):
# do something with long time
# if you need made a search inside this method must do
new_cr = self.pool.cursor()
self = self.with_env(self.env(cr=new_cr))
# here put your querry
query = ['&','&',('type_template_id','in',mark_tpl_ids), ('class_division_id','=',sheet.class_division_id.id), ('academic_year_id','=',sheet.academic_year_id.id)]
result = self.env['your.model'].search(querry).with_env(self.env(cr=new_cr))
new_cr.commit()
# IMPORTANT to close the cursor
new_cr.close()
def main_method (self):
# simulate pool of parameters
params ={
parm1_a:parm2_a,
parm1_b:parm2_b,
parm1_c:parm2_c,
}
#Se crea el pool
with ThreadPoolExecutor(max_workers=3) as executor:
futures = {executor.submit(self.bedSheetTable,parm1,parm2):cualquier_dato for parm1,parm2 in params.items()}
for future in as_completed(futures):
result = future.result()
# do someting with result