ActiveStorage大文件上传会触发Google :: Execution :: Expired

在工作中实现ActiveStorage时,我们发现在上传12GB大文件时,操作会持续大约10分钟而且我收到错误Google::Execution::Expired或者有时HTTPClient::SendTimeoutError: execution expired

我正在使用这样的行运行大多数上传:

backup.file.attach(io: File.open("/my/file/path.ext"), filename: "myfilename")

有没有办法让请求持续更长时间或一种方法来循环这个超时。

到目前为止,这种策略在上传4GB时运行良好。 只是当我过度使用文件大小时才发生这种情况。 时间不是我们这方面的问题,因为这是Cron工作的夜间任务。

Google云端存储客户端的发送超时默认为1分钟左右。 (您会看到延迟10分钟,因为客户端在遇到超时后会多次尝试恢复上传。)您可以在config/storage.yml指定不同的超时时间(以秒为单位):

 production: service: GCS credentials: { ... } project: my-project bucket: my-bucket timeout: 120 # 2 minutes 

使用timeout: 0可禁用发送超时。

Interesting Posts