【发布时间】: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