queue_job 充分发挥多核服务器并发优势
-
一个32核64G的服务器对于只有20个用户的Odoo系统来说实在有点太奢侈了。不过我们在下面的案例中却充分发挥了这个服务器资源的充沛动力。
甲方有一个每月订单导入,订单合并转发票,发票确认,邮件发送的需求。需求简单明了,但是拿到测试数据就有点懵了。一个将近10M的csv文件,里面包括一个月的7000个订单3万多条订单明细。我们还要在导入过程中创建将近一千条客户信息和产品信息。这用常规的导入是无法完成的。我们想到了用异步队列,而OCA项目中就有这个queue_job的异步模块。我们将导入数据自动分割成近300小份,然后为每份生成一个导入任务,放置在任务队列中,然后将job_queue的channel设置为15,相当于定义一个很粗口径的管道让15个worker同时并发处理任务。然后服务器嘶吼,5分钟完成导入工作,而在此期间完全不影响在Odoo中做其它的操作。需求中的其他的工作我们也用类似的方法通过异步队列来快速执行。
看到32核都运行在半饱和状态,很爽的感觉!
-
@digitalsatori 不错 消息队列的作用不小