我正在尝试使用GreenPool上传大约3k个文件(每个1千字节)。
我的问题:
为什么# Defined up front to avoid reconstructing over and over
choicemap = {'L': l, 'G': g, 'P': p, 'T': t, 'O': o}
# Avoid duplicating input code, infinite loop with break on 'Q' input
while True:
choice = input('L - Lettuce \nG - Green Beans \nP - Peppers \nT - Tomatoes \nO - Onions \nS - Seasonal Item \nQ - Quit').upper()
try:
choice = choicemap[choice]
except KeyError:
if choice == 'Q':
break
print("{!r} is not a recognized option".format(choice)
continue
try:
quanity = int(input('How Many?'))
except ValueError:
print("Non-numeric input provided, try again")
continue
Total += choice * quanity
print('Your total so far is $', Total)
print('All Done')
来电每次通话需要这么长时间?是什么原因导致与get_bucket()
时间进行权衡?我该如何解决它。谢谢!
更多详情:
set_content()
平均需要30秒,以下get_bucket(validate=True)
不到1秒。
我尝试更改为set_content_from_file_name
,这已成功将validate=False
时间缩短至1秒以内,但get_bucket()
的时间缩短至约30秒。我无法在boto docs中找到这种权衡的原因。
代码:
set_content_from_file_name
答案 0 :(得分:1)
您可以查看get_bucket
如果传递
validate=False
,则不会向服务发出请求(否) 充电/通讯延迟)。如果您确定,这样做是安全的 存在桶。如果传递了默认
validate=True
,则向该请求发出请求 服务以确保存在桶。在Boto v2.25.0之前,这个 获取了一个键列表(但最大限制设置为0,始终 在桶中返回一个空列表(&包含更好的错误) 消息),费用增加。截至Boto v2.25.0,现在这个 执行HEAD请求(更便宜但更糟糕的错误消息)。
此后当你拨打set_contents_from_filename
时,需要打开s3键进行阅读,这时它会向s3发出请求。
回到您关于上传大量文件的问题,并且由于您使用boto3标记了问题,我建议您转到boto3并查看Transfer Manager