如何增量计算上传到多个服务器实例的文件的“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。
同样,hashlib
的 update
方法精确地存在,因此您可以将文件分成更小的部分。如果它没有像您希望的那样工作,请edit 提供一个小的minimal reproducible example (可能需要一个 4 字节的文件并一次提交一个字节作为最小演示)。
你真的想问如何在不同的......线程之间传达中间结果吗?流程?服务器?如果无法在调用之间将对象保留在内存中,则需要找到一种序列化它的方法。 pickle
浮现在脑海中。但目前还不清楚这是否真的是你的问题。
(如果不知道逗号怎么用,完全不用的话可能会更容易理解。)
【参考方案1】:
最后,我从这个链接得到了答案:https://bugs.python.org/issue11771
它建议使用名为 rehash 的第三方库在 Python 实例之间共享中间 hashlib
对象。
【讨论】:
以上是关于如何增量计算上传到多个服务器实例的文件的“sha256”?的主要内容,如果未能解决你的问题,请参考以下文章