Вчера я начал использовать Amazon S3 с boto, я установил скрипт на python для создания корзины и загрузки изображений в каталог. Я запускал его несколько раз, и, похоже, все было в порядке.
Однако я не хочу постоянно создавать сегменты, поэтому я адаптировал свой скрипт для get_bucket:
import os
import boto
s3 = boto.connect_s3()
bucket = s3.get_bucket('images')
# Run Selenium test process to create images
for root, dirs, files in os.walk(imagesPath):
for name in files:
filename = os.path.join(root, name)
key = bucket.new_key('{0}/{1}/{2}'.format(revisionNumber, images_process, name))
print "Uploading " + filename + " to Amazon S3"
key.set_contents_from_filename(filename)
key.set_acl('public-read')
Ошибка исходит из строки key.set_contents_from_filename(filename)
Этот код по сути представляет собой пример кода из руководства по началу работы с S3, которое я поместил в цикл. Я предполагаю, что проблема в том, что это здорово делать вещи с первого раза, но недостаточно надежна, чтобы справиться с перезаписью и т. Д. Нужно ли давать бото больше, чем просто имя файла для загрузки?
Выходные данные из сценария:
[exec] Uploading images/Add_Employer_Process/20227M/1.png to Amazon S3
[exec] Traceback (most recent call last):
[exec] File "addEmployerProcess.py", line 121, in <module>
[exec] k.set_contents_from_filename(filename)
[exec] File "C:\Python26\lib\site-packages\boto\s3\key.py", line 969, inset_contents_from_filename
[exec] encrypt_key=encrypt_key)
[exec] File "C:\Python26\lib\site-packages\boto\s3\key.py", line 902, inset_contents_from_file
[exec] size=size)
[exec] File "C:\Python26\lib\site-packages\boto\s3\key.py", line 660, insend_file
[exec] query_args=query_args)
[exec] File "C:\Python26\lib\site-packages\boto\s3\connection.py", line 449, in make_request
[exec] override_num_retries=override_num_retries)
[exec] File "C:\Python26\lib\site-packages\boto\connection.py", line 829, in make_request
[exec] return self._mexe(http_request, sender, override_num_retries)
[exec] File "C:\Python26\lib\site-packages\boto\connection.py", line 794, in _mexe
[exec] raise e
[exec] socket.error: [Errno 10054] An existing connection was forcibly closed by the remote host
Я новичок во всем этом, включая Python, поэтому любая помощь будет принята:)