【问题标题】:Do I need to close my connections to Amazon S3 in my Rails App?我是否需要在 Rails 应用程序中关闭与 Amazon S3 的连接?
【发布时间】:2011-04-02 11:18:37
【问题描述】:

我正在将我的 rails 应用程序迁移到 Heroku,并且需要更改我的文件上传功能以使用 Amazon S3 而不是本地存储。我正在使用 aws-s3 gem 并且可以正常工作,但只是想确保我做的事情是正确的,而不是给自己制造问题。

在我的上传代码中,我有以下内容;

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 的幕后使用的协议没有很好的了解,但我并不是特别想这样做 - 我只是想确保它能够正常工作而不会造成问题。

【问题讨论】:

    标签: ruby-on-rails ruby amazon-s3 uploading


    【解决方案1】:

    在此处查看 API 文档,尤其是断开连接方法:

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

    不清楚是否必须明确关闭每个连接。但是,如果您打开持久连接,它确实提到了性能提升,无论如何默认情况下都会这样做。

    [...]

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

    打开这个可以提供大约两个 折叠

    性能提升但持续时间长 运行进程一些防火墙可能 找到长期存在的联系 怀疑并关闭连接。 如果遇到连接错误,请尝试 设置 :persistent 为 false。默认值 为真。

    【讨论】:

    • 谢谢,我决定明确关闭连接,因为我认为考虑到 webapp 的性质,这是合适的。我看不出这样做有什么真正的劣势。
    猜你喜欢
    • 2016-03-18
    • 1970-01-01
    • 2015-08-08
    • 1970-01-01
    • 2013-03-04
    • 1970-01-01
    • 2011-05-29
    • 2010-11-08
    • 1970-01-01
    相关资源
    最近更新 更多