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

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

@digitalsatori 不错 消息队列的作用不小
Hello! It looks like you're interested in this conversation, but you don't have an account yet.
Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.
With your input, this post could be even better 💗
Register Login