gpt4 book ai didi

python - 检查由 Twisted 的 FTPClient.retrieveFile 方法检索的文件的完整性

转载 作者:太空宇宙 更新时间:2023-11-03 15:29:09 25 4
gpt4 key购买 nike

我正在编写一个自定义 ftp 客户端,作为我们合作伙伴之一雇用的分包商传入多媒体内容的看门人。我选择 twisted 是因为它允许我在将文件写入本地磁盘之前解析文件内容,而且我一直在寻找机会来探索 twisted。我正在使用“twisted.protocols.ftp.FTPClient.retrieveFile”来获取文件,将转义路径传递给文件,并将协议(protocol)传递给“retrieveFile”方法。我想绝对确定整个文件已被检索,因为回调中的事件处理程序将文件写入本地磁盘,然后从 ftp 服务器删除远程文件 alla lftp 中的“-E”开关行为客户。我的问题是,我真的需要为此担心吗,或者我是否可以假设如果文件未完全检索到会发生错误返回?

最佳答案

在这方面有几个针对行为的单元测试。

twisted.test.test_ftp.FTPClientTestCase.test_failedRETR 是最直接相关的一个。它涵盖了在文件传输过程中控制和数据连接丢失的情况。

在我看来,这方面的测试覆盖率可以显着提高。例如,没有测试涵盖在传输过程中仅丢失数据连接的情况。但是,使这变得棘手的一件事是 FTP 不是一个非常健壮的协议(protocol)。数据连接关闭表示文件传输结束。为安全起见,您必须检查是否收到了预期的字节数。执行此检查的唯一方法是提前知道文件大小或使用 LIST (FTPClient.list) 向服务器请求它。

鉴于所有这些,我建议当文件传输完成时,您总是询问服务器您应该获得多少字节,并确保它与传送到您的协议(protocol)的字节数一致。有时您可能会在从 retrieveFile 返回的 Deferred 上收到错误反馈,但即使在您没有这样做的情况下,这也会确保您的安全。

关于python - 检查由 Twisted 的 FTPClient.retrieveFile 方法检索的文件的完整性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1757276/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com