从MongoDB获取大数据的最佳方法

3

我有一个数据库,超过200万条记录。每个记录都包含一个指向需要下载并存储到AWS S3的图像的URL。

有没有更好的方法来处理这个问题,而不是一个一个地下载和上传?

我目前正在使用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)

grequests https://pypi.python.org/pypi/grequests - Padraic Cunningham
1个回答

0

解决这个问题的最佳方式是使用批处理和多线程。我通过添加一个带有日期戳或布尔值的字段来解决类似的问题,表示特定项已被处理(或者在这种情况下,链接到其在AWS上的文件ID或URL),并编写一个客户端脚本或应用程序,选择需要处理的一批项目,并对它们进行处理。

当然,要确保线程或其他计算机也运行该脚本时,不要让它们互相干扰,可以通过使某个值或甚至是单独的字段指示线程已经声明了特定记录并正在处理它来避免冲突。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接