odoo开发笔记 -- 借助模块queue_job实现异步方法调用

柔情痞子 提交于 2019-11-30 00:01:58

场景描述:

对比了几个定时调度的框架,发现各有优缺点;

celery 很强,异步定时调度,异步周期调度,也有延时调度的功能,但是样例比较少,遂暂时放弃使用。

queue_job,一个odoo第三方应用模块,同样功能强大,可以满足日常的异步方法执行;

模块github地址:https://github.com/OCA/queue/tree/10.0/queue_job

但是我们的场景稍微有些不同,就是需要在异步调用的基础上增加一个延时(例5秒);

一般的异步调度机制:异步执行避免了任务的阻塞,如果没有延时调用执行的需求,那么相当于将需要异步执行的任务,添加到了一个待执行的队列中,然后交给后台程序去慢慢处理,

处理的速度及性能,取决于服务器的硬件配置以及给相应任务指定的进程数量。

回到我们的需求,通过分析queue_job模块的代码,大概找到我们需要定制修改的位置,即:在job开始执行前增加一个延时,下图为未修改之前:

修改后代码:

 

注意:这样虽然可以满足需求,但是会有新的问题,造成系统走到这里需要等待5秒时间,

实际生产环境,修改后,需要观察性能,如果处理效率满足不了实际情况,可以考虑适当增加服务器CPU配置,以及配置文件中的worker数,即多开辟进程。

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!