Нужно ли закрывать подключения к Amazon S3 в приложении Rails? - PullRequest
4 голосов
/ 23 августа 2010

Я перевожу свое приложение rails на Heroku и мне нужно изменить функцию загрузки файлов, чтобы использовать Amazon S3 вместо локального хранилища. Я использую гем aws-s3 и у меня это работает, но я просто хочу убедиться, что я все делаю правильно, а не создаю проблемы для себя.

В моем коде для загрузки у меня есть следующее:

AWS::S3::Base.establish_connection!(
    :access_key_id     => 'Not telling',
    :secret_access_key => 'Really not telling'
  )
AWS::S3::S3Object.store("#{self.name}", upload_file_field.read, 'my_bucket')

Это прекрасно работает, но я обеспокоен тем, что оставляю какое-то соединение с сервером открытым. Нужно ли закрывать соединение, как только я закончу (например, с AWS::S3::Base.disconnect), или я могу просто оставить все как есть?

Очевидно, что у меня нет хорошего понимания протоколов, используемых за кулисами при моем подключении к S3, но я не особенно хочу - я просто хочу убедиться, что это будет работать без проблем. *

1 Ответ

2 голосов
/ 23 августа 2010

Проверьте здесь документы для API и, в частности, метод отключения:

http://amazon.rubyforge.org/doc/classes/AWS/S3/Connection/Management/ClassMethods.html#M000088

Неясно, нужно ли явно закрывать каждое соединение.Тем не менее, он упоминает об увеличении производительности, если вы открываете постоянное соединение, в любом случае это делается по умолчанию.

[...]

* :persistent - Whether to use a persistent connection to the server.

Включение этого обеспечиваетувеличение производительности в два раза

, но при длительных процессах некоторые брандмауэры могут найти подозрительное долгоживущее соединение и закрыть соединение.Если вы столкнулись с ошибками соединения, попробуйте установить: постоянный на ложь.По умолчанию true.

...