Scrapy 使碎屑管道等待同一管道或上一管道中的另一项

Scrapy 使碎屑管道等待同一管道或上一管道中的另一项,scrapy,twisted.internet,scrapy-pipeline,Scrapy,Twisted.internet,Scrapy Pipeline,我的问题如下: 我有3条管线 一个下载档案的文件管道 一个ArchiveUnpackerPipeline,用于解压缩归档文件 一个用于生成指向这些归档文件内容的符号链接的管道 问题如下: 由于网站的构建方式,我可能不得不从不同的项目生成指向同一存档的符号链接。如果一切都以顺序方式运行,则可能如下所示: item_1启动下载archive_1 item_1启动archive_1 item_1从archive_1 item_2查看过去下载的archive_1,返回item_1 item_2看到a

我的问题如下:

我有3条管线

  • 一个下载档案的文件管道
  • 一个ArchiveUnpackerPipeline,用于解压缩归档文件
  • 一个用于生成指向这些归档文件内容的符号链接的管道
问题如下:

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

  • item_1
    启动下载
    archive_1
  • item_1
    启动
    archive_1
  • item_1
    archive_1
  • item_2
    查看过去下载的
    archive_1
    ,返回
    item_1
  • item_2
    看到
    archive_1
    过去已解压缩,返回
    item_1
  • item_2
    archive_1
  • 但由于下载可能需要一段时间,同一文件可能会被下载两次,以此类推,从而导致错误

    有没有一个优雅的方法来解决这个问题?我的第一个猜测是,它可能与一个全局字典一起工作,该字典跟踪每个下载url的状态,其状态为
    下载
    下载完成
    解包
    完成了_解包
    并使用twisted Deferred——但由于我以前从未使用twisted,所以我不能完全确定