让scrapy管道等待同一个或上一个管道中的另一个项目

时间:2016-11-22 15:24:14

标签: scrapy twisted.internet scrapy-pipeline

我的问题如下:

我有3个项目管道

  • 一个下载档案的FilesPipeline
  • 解压缩档案的一个ArchiveUnpackerPipeline
  • 一个SymbolicLinkerPipeline,用于生成指向这些档案内容的符号链接

问题如下:

由于网站的构建方式,我可能必须从不同的项目生成指向同一档案的符号链接。如果所有内容都以顺序方式运行,则可能如下所示:

  1. item_1发起archive_1
  2. 的下载
  3. item_1启动archive_1
  4. 的解包
  5. item_1启动了来自files_1
  6. archive_1的符号链接
  7. item_2发现过去已下载archive_1,返回item_1
  8. item_2看到archive_1过去已解包,返回item_1
  9. item_2启动了来自files_2
  10. archive_1的符号链接

    但是由于下载可能需要一段时间才会发生同一文件被下载两次,依此类推,这会导致错误。

    有没有一种优雅的方法来解决这个问题?我的第一个猜测是,它可以与全局词典一起使用,该词典使用downloadingfinished_downloadingunpackingfinished_unpacking和使用扭曲等状态跟踪每个download_url的状态推迟 - 但在我不确定之前我从未使用扭曲。

0 个答案:

没有答案