【发布时间】:2020-07-10 17:36:48
【问题描述】:
抱歉打扰各位了。这是一个不好的问题,似乎真正让我感到困惑的是 ItemPipeline 如何在 scrapy 中工作。我将关闭它并开始一个新问题。
我应该在哪里将 db/redis 连接绑定到 scrapy,Spider 或 Pipeline。
在scrapy 文档中,mongo db connection is bind on Pipeline。但它也可能是bound to the Spider(这也是扩展scrapy-redis 所做的)。后面的解决方案带来的好处是除了管道之外,蜘蛛可以在更多地方访问,比如中间件。
那么,哪种方法更好呢?
我对管道并行运行感到困惑(这是文档所说的)。这是否意味着MyCustomPipeline 有多个实例?
另外,首选redis/db的连接池?
我只是缺乏做出决定的现场经验。需要你的帮助。提前致谢。
正如文档所说,ItemPipeline 是并行运行的。如何?是否有重复的 ItemPipeline 实例在线程中运行。 (我注意到 FilesPipeline 使用延迟线程将文件保存到 s3)。或者每个管道只有一个实例并在主事件循环中运行。如果是后一种情况,连接池似乎没有帮助。因为当你使用 redis 连接时,它被阻塞了。一次只能使用一个连接。
【问题讨论】:
-
始终用于连接任何网络,首选网络池或连接池,因为您可以同时使用多个连接
标签: python web-scraping scrapy web-crawler scrapy-pipeline