我正在 Python 中实现一个简单的上传处理程序,它将上传的文件分块读取到内存中,GZip 并对其进行签名,然后将它们重新上传到另一台服务器以进行长期存储。我已经设计了一种方法来使用我的网络服务器读取 block 中的上传内容,基本上我有一个这样的工作流程:
class MyUploadHandler:
def on_file_started(self, file_name):
pass
def on_file_chunk(self, chunk):
pass
def on_file_finished(self, file_size):
pass
这部分效果很好。
现在我需要在对文件执行修改后将文件分块上传到最终目的地。我正在寻找类似这样的工作流程:
import requests
class MyUploadHandler:
def on_file_started(self, file_name):
self.request = requests.put("http://secondaryuploadlocation.com/upload/%s" %
(file_name,), streaming_upload = True)
def on_file_chunk(self, chunk):
self.request.write_body(transform_chunk(chunk))
def on_file_finished(self, file_size):
self.request.finish()
有没有办法使用 Python 请求库来做到这一点?似乎they allow for file-like upload objects可以阅读,但我不确定这到底意味着什么以及如何将其应用于我的情况。如何提供这样的流式上传请求?
最佳答案
我建议使用 Python 的多处理模块。您可以使用该模块中的 apply_async 例程在每个 block 完成时上传它们,而不影响其他上传。然后您可以将它们放在一个临时文件夹中,在上传事件完成后,您可以将它们缝合在一起。
关于python - 流媒体上传请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15557841/