【问题标题】:Async single document insert vs callback insert异步单文档插入与回调插入
【发布时间】:2014-06-24 14:22:35
【问题描述】:

我目前有一个场景,我需要从多个网页中提取内容,处理内容,插入 MongoDB。我在思考什么是最好的方法。它让我有点困惑,因为有很多方法可以解决这个问题。

例如,我可以这样做:

jobs = group(visit.s(i) for i  in payload) 
res = ( jobs|process.s()|save.s())()

据我了解,这将访问一个页面,然后处理它,然后保存它。全部完成异步(也许同时?)。这种方式是完全异步的,实际上没有等待,但每个项目都是单独插入到 MongoDB 中的。

另一方面,我可以使用回调:

jobs = group(visit.s(i) for i  in payload) 
res = chord( jobs|process.s(),save.s())()

这将进行异步获取和处理,然后等待所有任务完成,然后异步保存结果,这将导致批量插入到 MongoDB。

所以我想知道是否有人有类似的经历,一般来说哪种方法更好。我应该完全异步吗?或者那里有一些同步代码。

另外一个问题是任何 cmets 可能使用分块而不是单页任务会很棒。

谢谢

【问题讨论】:

    标签: python mongodb asynchronous celery django-celery


    【解决方案1】:

    相关question,其中也包含答案。没有直接关系,但它的要点是批量插入仍然只是循环中的单个插入,并且 Mongo 可以处理大量连接,所以看起来没关系,异步应该可以正常工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-12-25
      • 1970-01-01
      • 2014-04-18
      • 1970-01-01
      • 2015-01-26
      • 1970-01-01
      • 2017-04-07
      • 1970-01-01
      相关资源
      最近更新 更多