如何增量计算上传到多个服务器实例的文件的“sha256”?

Posted

技术标签:

【中文标题】如何增量计算上传到多个服务器实例的文件的“sha256”?【英文标题】:How to incrementally calculate `sha256` for a file which is uploaded to multiple server instances? 【发布时间】:2022-01-14 03:45:38 【问题描述】:

我想提供一个文件上传API,它支持通过多个http请求上传一个大文件。请求可以发送到不同的服务器,但我不想将整个文件复制到所有这些服务器 - 他们应该接受文件片段并将其转发到另一个服务,但我需要从个人那里获取 SHA256 校验和之前的部分。 ds?

在Python中,我知道hashlib可以调用update一步一步计算sha256签名,但这显然需要在同一个Python进程中执行。

当部件不能同时用于同一个 Python 实例时,谁能帮我弄清楚如何在对大文件的 http 请求期间继续计算 sha256?

【问题讨论】:

您的实际问题是什么? update 函数完全符合您的要求,正是出于这个原因。 @tripleee 我可以在一个 http 请求中进行更新,它可以检查在这个 http 请求中发送的正文的 sha256 值。但我想检查总文件的 sha256 值,而不是在完成请求时重新启动 sha256。 同样,hashlibupdate 方法精确地存在,因此您可以将文件分成更小的部分。如果它没有像您希望的那样工作,请edit 提供一个小的minimal reproducible example (可能需要一个 4 字节的文件并一次提交一个字节作为最小演示)。 你真的想问如何在不同的......线程之间传达中间结果吗?流程?服务器?如果无法在调用之间将对象保留在内存中,则需要找到一种序列化它的方法。 pickle 浮现在脑海中。但目前还不清楚这是否真的是你的问题。 (如果不知道逗号怎么用,完全不用的话可能会更容易理解。) 【参考方案1】:

最后,我从这个链接得到了答案:https://bugs.python.org/issue11771

它建议使用名为 rehash 的第三方库在 Python 实例之间共享中间 hashlib 对象。

【讨论】:

以上是关于如何增量计算上传到多个服务器实例的文件的“sha256”?的主要内容,如果未能解决你的问题,请参考以下文章

用Rsync,实现网站的增量部署

如何确认在多个服务器实例上是否完成了相同的任务

多实例集群部署下的图片上传

如何使用 alamofire 将多个 PDF 文件上传到服务器? #Swift 4 #IOS [重复]

如何使用 alamofire 上传多个文件并显示进度?

如何使用bat批处理或cmd,:将一个文件复制为“多个副本“(增量备份,自动重命名)到指定目录