У меня есть общий вопрос относительно загрузки с клиента (в данном случае iPhone-приложения) на S3.Я использую Django для написания своего веб-сервиса на экземпляре EC2.Следующий метод является минимальным для загрузки файла на S3, и он очень хорошо работает с небольшими файлами (jpgs или pngs <1 МБ): </p>
def store_in_s3(filename, content):
conn = S3Connection(settings.ACCESS_KEY, settings.PASS_KEY) # gets access key and pass key from settings.py
bucket = conn.create_bucket('somebucket')
k = Key(bucket) # create key on this bucket
k.key = filename
mime = mimetypes.guess_type(filename)[0]
k.set_metadata('Content-Type', mime)
k.set_contents_from_string(content)
k.set_acl('public-read')
def uploadimage(request, name):
if request.method == 'PUT':
store_in_s3(name,request.raw_post_data)
return HttpResponse("Uploading raw data to S3 ...")
else:
return HttpResponse("Upload not successful!")
Я довольно новичок во всем этом, поэтомуЯ до сих пор не понимаю, что здесь происходит.Это тот случай, когда:
- Django получает файл и сохраняет его в памяти моего экземпляра EC2?
- Следует ли мне избегать использования raw_post_data, а делать куски, чтобы избежать проблем с памятью?
- Как только Django получит файл, передаст ли он функции store_in_s3?
- Как узнать, была ли загрузка на S3 успешной?
В общем, мне интересно, будет ли одна строка моего кода выполняться за другой.Например, когда будет return HttpResponse("Uploading raw data to S3 ...")
огонь?Пока файл все еще загружается или после того, как он был успешно загружен?
Спасибо за вашу помощь.Кроме того, я был бы благодарен за любые документы, которые рассматривают эту тему.Я взглянул на главы в O'Reilly's Python & AWS Cookbook, но поскольку это всего лишь примеры кода, он не отвечает на мои вопросы.