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
可禁用发送超时。