2016-04-26 101 views
3

我有一個數據庫,超過200萬條記錄。每個記錄都包含一個圖像的URL,我需要下載並存儲到AWS S3從MongoDB獲取大數據的最佳方法

與其一次下載一個,然後一次上傳一個,有沒有更好的方法來處理這個問題?

我使用Python,因此pymongo目前。

for item in itemsCursor: 
    download_image(item['imageurl') 

def download_image(item): 
    name = 'example.jpg' 
    response = requests.get(url) 
    img = Image.open(StringIO(response.content)) 
    img.save('temp.jpg', "JPEG") 
    s3.meta.client.upload_file('temp.jpg', 'bucket', name) 
+0

grequests https://pypi.python.org/pypi/grequests –

回答

0

做到這一點的最好方法是做批處理和多線程。我已經通過添加帶有日期戳記或布爾值的字段來解決類似問題,該字段表示已處理特定項目(或者在這種情況下,指向它在AWS上的文件ID或URL的鏈接),並編寫客戶端腳本或應用程序選擇一個或一批需要處理的項目並通過它們轉移。

當然,確保線程或其他運行腳本的計算機不會因爲某個值或某個單獨的字段指示某個線程聲明瞭特定的記錄而正在處理處理它。

相關問題