У меня есть экземпляр Object Storage на IBM Bluemix, и я пытаюсь загрузить файл SQLite размером 32 ГБ. Вот мой Python код, который использует API OpenStack Swift (с учетными данными удалены):Как загрузить большой файл SQLite в хранилище объектов с помощью OpenStack Swift (через Python)
import swiftclient
conn = swiftclient.Connection(key="pw",authurl="url",auth_version='3',os_options={"project_id": "project_id","user_id": "user_id","region_name": "region"})
container_name = 'containerName'
file_name = 'file.sqlite'
with open(file_name, 'rb') as sqlite_file:
conn.put_object(container_name,file_name,sqlite_file)
Я тестировал этот код с небольшим файлом .html и загружен без проблем. Когда я сменил файл на файл SQLite, он пробежал> 5 часов и в итоге дал сообщение «request.exceptions.ConnectionError: [Errno 32] Broken pipe». Что я делаю не так?
Теперь он работает. Некоторые сегменты работают, а некоторые из них выходят из строя: put_object (u'RossL_segments ', u'bigfile.sqlite/slo/1438471533.000000/31807655936/200000000/00000007', ...) сбой и невозможность сбросить содержимое для reupload. Любые советы по этому вопросу? –
@RossLewis В быстрых документах [здесь] (http://docs.openstack.org/cli-reference/swift.html#swift-upload) вы можете повторно запустить команду, используя ** - leave-segment ** аргумент, чтобы попытаться получить повторные загрузки сбоев. Время от времени я сталкивался с ошибками сегментов загрузки и обычно получаю успешное выполнение после повторной попытки. Вы также можете настроить размер сегмента и количество потоков в соответствии с вашими сетевыми характеристиками. –
Еще раз спасибо за помощь в этом! Теперь, когда я загрузил файл, могу ли я избавиться от всех сегментов в контейнере _segment? –