GAE因401而刷新(尝试1/2)

5 google-app-engine google-authentication google-cloud-storage google-cloud-platform

我使用gcloud app deploy部署应用程序.它运行良好几个小时,然后工作陷入以下信息日志:

03:54:59.748 Refreshing due to a 401 (attempt 1/2)
03:58:44.816 Refreshing due to a 401 (attempt 1/2)
03:58:55.781 Refreshing due to a 401 (attempt 1/2)
03:58:56.317 Refreshing due to a 401 (attempt 1/2)
Run Code Online (Sandbox Code Playgroud)

好像它是从内部serviceName记录的:"appengine.googleapis.com"

部署的应用程序从GCS读取一些文件,并使用google pubsub发布一些计算的指标.我使用谷歌客户端API库,它使用凭据进行身份验证.

    credentials = GoogleCredentials.get_application_default()
    if credentials.create_scoped_required():
        credentials = credentials.create_scoped(['https://www.googleapis.com/auth/devstorage.read_only)
    http = httplib2.Http()
    credentials.authorize(http)
    return discovery.build('storage', 'v1', http=http)
Run Code Online (Sandbox Code Playgroud)

pubsub的类似片段也是如此.有任何人遇到类似的问题,其中请求似乎永远停留在显示401状态代码的信息日志.不确定为什么请求不会超时并导致失败.任何变通方法?

Jof*_*fre 2

401 是未经授权的错误,这意味着 OAuth 持有者令牌不再有效,需要使用刷新令牌进行刷新。您解释的时间线与不记名令牌的持续时间相匹配。

我会使用云惯用库,或者如果您使用 GAE 标准,则直接使用 appengine 库。这些库自行处理身份验证(包括在令牌过期时刷新令牌),并包括在 App Engine 中使用的进一步优化。