我有一个大约500,000个字符串的python列表,列表中的每个元素对应于我要更新的dynamodb表中某个项目的ID。
我的问题是,遍历此列表并对每个项目执行相同的更新查询的最佳方法是什么?
我尝试使用
data = pd.read_csv(filename)
pool = Pool(50)
results = pool.imap_unordered(job, data['item_id'].astype(str).tolist())
其中“ job”是以下方法:
def job(item_id):
dynamodb = boto3.resource(
'dynamodb',
aws_access_key_id=aws_access_key_id,
aws_secret_access_key=aws_secret_access_key,
aws_session_token=aws_session_token,
region_name=region
)
table = dynamodb.Table('my-table')
response = table.update_item(
Key={
"id": item_id
},
UpdateExpression="set price=:new",
ExpressionAttributeValues={
':new': []
},
ReturnValues="UPDATED_NEW"
)
但是,尽管脚本执行没有错误,但是更改并未保留在dynamodb表中,我感到好像我误会了如何在boto3资源上使用进程池以使此任务在500,000以上的效率有所提高项目。
还值得注意的是,当我打印出收到的响应时,我会收到HTTP 200响应。
答案 0 :(得分:0)