1

我的问题如下:

我有 3 个项目管道

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

问题如下:

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

  1. item_1开始下载archive_1
  2. item_1开始拆包archive_1
  3. item_1files_1启动from的符号链接archive_1
  4. item_2看到archive_1过去下载的,返回item_1
  5. item_2看到archive_1过去拆开包装,返回item_1
  6. item_2files_2启动from的符号链接archive_1

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

有没有一种优雅的方法来解决这个问题?我的第一个猜测是它可能与一个全局字典一起使用,该字典跟踪每个 download_url 的状态,状态为downloading, finished_downloading, unpacking,finished_unpacking并使用 twisted Deferred ——但因为我在不确定之前从未使用过 twisted。

4

0 回答 0