从云端 运行 下载 public URL 时,Firebase 存储 returns 503 和空响应

Firebase Storage returns 503 and an empty response when downloading public URL from Cloud Run

我有一个云 运行 容器,它从 public Firebase 存储 URL 中获取 CSV 文件。使用 Python requests 模块执行提取(即:requests.get())。

有时,显然是随机的,我得到一个 503 状态代码并且响应长度为零:

{
  'X-GUploader-UploadID': 'XXX...',
  'Date': 'Tue, 19 Oct 2021 12:26:39 GMT',
  'Expires': 'Tue, 19 Oct 2021 12:26:39 GMT',
  'Cache-Control': 'private, max-age=0',
  'Content-Length': '0',
  'Server': 'UploadServer',
  'Content-Type': 'text/html; charset=UTF-8',
  'Alt-Svc': 'h3=":443"; ma=2592000,h3-29=":443"; ma=2592000,h3-Q050=":443"; ma=2592000,h3-Q046=":443"; ma=2592000,h3-Q043=":443"; ma=2592000'
}

如果不重新上传文件,只是在几分钟后尝试,相同的请求可能会导致预期的非空响应(状态代码为 200):

{
  'X-GUploader-UploadID': 'XXX...',
  'Expires': 'Tue, 19 Oct 2021 12:49:05 GMT',
  'Date': 'Tue, 19 Oct 2021 12:49:05 GMT',
  'Cache-Control': 'private, max-age=0',
  'Last-Modified': 'Wed, 04 Aug 2021 06:49:35 GMT',
  'ETag': '"9b6916..."',
  'x-goog-generation': '16280...',
  'x-goog-metageneration': '1',
  'x-goog-stored-content-encoding': 'identity',
  'x-goog-stored-content-length': '51666',
  'x-goog-meta-firebaseStorageDownloadTokens': '1954069b-...',
  'Content-Type': 'application/vnd.ms-excel',
  'Content-Disposition': "inline; filename*=utf-8''csvdata",
  'x-goog-hash': 'crc32c=1LcP6Q==, md5=m1kWwxGuzZXeO4ZuA0NT5A==',
  'x-goog-storage-class': 'STANDARD',
  'Accept-Ranges': 'bytes',
  'Content-Length': '51666',
  'Vary': 'Origin',
  'Server': 'UploadServer',
  'Alt-Svc': 'h3=":443"; ma=2592000,h3-29=":443"; ma=2592000,h3-T051=":443"; ma=2592000,h3-Q050=":443"; ma=2592000,h3-Q046=":443"; ma=2592000,h3-Q043=":443"; ma=2592000,quic=":443"; ma=2592000; v="46,43"'
}

无法根据我的计算机的请求进行复制(即:文件始终正确下载)。它似乎只发生在 Cloud 运行.

知道会发生什么吗?

云存储 HTTP 状态 503 表示云存储遇到内部错误。这通常意味着您可以稍后再试(例如等待十秒),如果原始请求有效,请求将成功。

推荐的解决方案是使用truncated exponential backoff重试。

参考:503 - Service Unavailable

[更新 - 请参阅下面的评论]

如果一个实例正常工作而另一个相同的实例一直失败,那么您遇到了服务问题。您将需要使用 Google Cloud 打开一个支持案例。收集您的日志以明确说明您评论的内容,以便 Google 知道要诊断什么。