Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 从MongoDB获取大数据的最佳方法_Python_Mongodb_Pymongo - Fatal编程技术网

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

Python 从MongoDB获取大数据的最佳方法,python,mongodb,pymongo,Python,Mongodb,Pymongo,我有一个数据库,超过200万条记录。每个记录都包含一个指向我需要下载并存储到AWS S3的图像的URL 有没有更好的方法来处理这个问题,而不是一次下载一个,然后一次上传一个 我正在使用Python,因此目前使用pymongo for item in itemsCursor: download_image(item['imageurl') def download_image(item): name = 'example.jpg' response = requests.g

我有一个数据库,超过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)

最好的方法是进行批处理和多线程处理。我通过添加一个带有日期戳或布尔值的字段来解决类似的问题,该字段指示某个特定项目已被处理(在本例中,可能是指向AWS上该项目的文件ID或URL的链接),并编写一个客户端脚本或应用程序,该脚本或应用程序将选择一个或一批需要处理的项目并通过它们进行转换

当然,要确保线程或其他同时运行脚本的计算机不会因为生成某个值而相互绊倒,甚至一个单独的字段都表示线程已声明某个特定记录并正在处理该记录。

grequests