我正在Python中實現一個簡單的上傳處理程序,它將上傳的文件分塊地讀入內存,GZips並對它們進行簽名,並將它們重新上傳到另一臺服務器進行長期存儲。我已經設計了一種方法來讀取與我的Web服務器塊上傳,而且基本上我有一個這樣的工作流程:流媒體上傳請求?
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可以閱讀,但我不確定這是什麼意思,以及如何將其應用於我的情況。我如何提供這樣的流式上傳請求?
您需要[分塊上傳發生器]提供一種(實施例代碼http://docs.python-requests.org/en/最新/用戶/高級/#塊編碼請求),但是*拉*數據;你的代碼想要推動。我想,它需要一個單獨的線程和一個隊列。 – 2013-03-21 21:12:54
關於從哪裏開始的任何想法?我的Python線程不太好。 – 2013-03-21 21:18:15
這部分取決於您正在使用的Web框架以及它如何處理併發。 – 2013-03-21 21:25:07