4

我正在将我的 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 的幕后使用的协议没有很好的理解,但我并不是特别想要 - 我只是想确保它能够正常工作而不会引起问题。

4

1 回答 1

2

在此处查看 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。默认为真。

于 2010-08-23T05:12:06.413 回答