1

我的客户端中的每个线程都初始化为

self.credentials = oauth2client.client.SignedJwtAssertionCredentials(...)
http = httplib2.Http()
http = self.credentials.authorize(http)
self.http = http

这最初工作得很好,每个客户都能够做适当的工作。

随着时间的临近和令牌接近到期,刷新凭证以便每个线程可以继续取得进展的最佳方法是什么?我试过了

self.credentials.refresh(self.http)

就在一个小时前,但我看到了

_read_status 中的文件“/usr/lib64/python2.6/httplib.py”,第 355 行引发 BadStatusLine(line) BadStatusLine

4

2 回答 2

0

OAuth 2.0 服务帐户访问令牌不能以与常规 OAuth 2.0 访问令牌相同的方式刷新。相反,您需要从头开始重建凭据并请求另一个访问令牌。

如此有效,您只需重用您的初始化代码。

于 2013-09-16T14:02:45.453 回答
0

关于线程,请阅读:https ://developers.google.com/api-client-library/python/guide/thread_safety

无需手动刷新,因为它是在 apiclient 库(此处)中自动完成的。

代码应如下所示:

{共享代码}

self.credentials = oauth2client.client.SignedJwtAssertionCredentials(...)

.

{线程代码}

service = self.credentials.authorize(httplib2.Http())

希望能帮助到你。

于 2013-09-23T11:07:32.683 回答