如何使用twisted下载远程文件?

1 投票
1 回答
1502 浏览
提问于 2025-04-16 01:47

我对Twisted还比较陌生,打算用它来做一个文件下载器。这个下载器可以接受一个文件的链接和用户指定的下载部分数量。

我想的办法是把文件分成用户指定的几部分,然后通过“延迟”来下载每一部分,等所有部分都下载完成后再把它们合在一起。

但是,我需要为每个要下载的文件创建一个协议吗?每个协议都要负责发送一个延迟去下载文件的每个小块吗?

有没有Twisted的组件可以用来读取远程文件,并且支持跳转到文件的某个位置?我真的不知道该从哪里开始。

1 个回答

1

如果你提到的URL是用HTTP协议(我希望是HTTP 1.1;-),那么你可以使用Twisted这个库里比较新的HTTP 1.1客户端(详细讨论可以在这里找到,考虑到这个问题在9个月前就被标记为已解决,我猜这个客户端终于可以用了——我还没去确认过)。你可以利用HTTP 1.1的范围请求来获取文件的“切片”。

如果你只能用HTTP 1.0,或者服务器不完全符合标准,那你可能就没那么幸运了;如果你真的想要“URL”中的“U”部分,也就是你需要一个适用于各种协议的通用解决方案,那问题就会变得非常非常复杂。

撰写回答