Amazon S3, как бороться с задержкой от загрузки до доступности объекта - PullRequest
3 голосов
/ 13 января 2012

Приложение, которое я создаю, позволяет пользователю загружать файл.Файл загружается в Amazon S3 в отдельном хранилище.

Затем пользователи могут загрузить файл, что мы разрешаем, создав URL с истекающим временем:

AWS::S3::S3Object.url_for(attachment.path(style || attachment.default_style), attachment.bucket_name, :expires_in => expires_in, :use_ssl => true)

Проблема, с которой мы столкнулисьявляется то, что есть короткая задержка от загрузки до доступности через AWS :: S3 :: S3Object.url_for.Если пользователи пытаются загрузить файл сразу после загрузки, Amazon выдает следующее сообщение:

215412-NameError (uninitialized constant Attachment::AWS):
215413-  app/models/attachment.rb:32:in `authenticated_url'
215414-  app/controllers/attachments_controller.rb:33:in `show'

Есть идеи, как оптимизировать, как справиться с этой задержкой?

Спасибо

1 Ответ

1 голос
/ 14 января 2012

Как долго вы видите задержку? Как часто это происходит?

Мы загружаем напрямую в s3 из браузера, используя https://github.com/PRX/s3-swf-upload-plugin, и к тому времени, когда я получаю обратный вызов, что файл существует, я никогда не видел ошибки, поскольку он еще не доступен.

Другая вещь, которую мы делаем, - помечает объект в одно состояние при первой загрузке, затем использует процесс asycnh для проверки файла, и только после того, как он помечен как действительный, мы продолжаем и обрабатываем его. Однако это вызывает задержку, поэтому, возможно, это не лучший ответ для вас.

...