在Google cloud bucket上传大文件失败



我正在从本地系统或remote_url上传一个大文件到google bucket。然而,每次我得到下面的错误。

/usr/local/lib/ruby/3.0.0/openssl/buffering.rb:345:in `syswrite': execution expired (Google::Apis::TransmissionError)

/usr/local/lib/ruby/3.0.0/openssl/buffering.rb:345:in `syswrite': execution expired (HTTPClient::SendTimeoutError)

我用carrierwave初始化定义配置我的谷歌服务帐户及其细节。请建议我是否缺少任何配置,或者我是否增加了超时或重试次数。

我的载波初始化器:

begin
CarrierWave.configure do |config|
config.fog_provider = 'fog/google'
config.fog_credentials = {
provider: 'Google',
google_project: '{project name}',
#google_json_key_string: Rails.application.secrets.google_cloud_storage_credential_content
google_json_key_location: '{My json key-file location}'
}
config.fog_attributes = {
expires: 600000,
open_timeout_sec: 600000,
send_timeout_sec: 600000,
read_timeout_sec: 600000,
fog_authenticated_url_expiration: 600000
}
config.fog_authenticated_url_expiration = 600000
config.fog_directory = 'test-bucket'
end
#

rescue => error
puts error.message
end

这可能与连接初始化和实际使用连接之间的持续时间有关。将persistent: false添加到fog_credentials应该使它为每个请求创建一个新连接。这是一个性能稍差,但它至少应该一致地工作,不像你现在遇到的情况。