如何在freezegun中使用Ignore包?



当我使用freezegun与谷歌存储api时,我得到了以下错误:

google.auth.exceptions.RefreshError: ('invalid_grant: Invalid JWT: Token must be a short-lived token (60 minutes) and in a reasonable timeframe. Check your iat and exp values in the JWT claim.', {'error': 'invalid_grant', 'error_description': 'Invalid JWT: Token must be a short-lived token (60 minutes) and in a reasonable timeframe. Check your iat and exp values in the JWT claim.'})

我认为忽略包可以解决问题。裁判:https://github.com/spulec/freezegun/pull/185

有时需要忽略特定包(即库)的freezgun行为。对于单个调用,可以忽略它们:

我尝试在忽略列表中添加["google" google.auth" "google.cloud"],但仍然出现相同的错误。

from google.cloud import storage
import freezegun
ig_ms = ["google", "google.oauth2", "urllib3", "google.cloud"]
freezegun.configure(extend_ignore_list=ig_ms)

with freezegun.freeze_time("2017-05-21", ignore=ig_ms):
client = storage.Client()
print(list(client.list_buckets()))

我对如何正确使用忽略包感到困惑。例如:

import urllib3
import freezegun
with freezegun.freeze_time("2017-05-21", ignore=['urllib3']):
http = urllib3.PoolManager()
resp = http.request("GET", "https://httpbin.org/robots.txt")
print(resp.status)

是否将urllib3添加到忽略列表中,它仍然会升高SystemTimeWarning: System time is way off (before 2020-07-01). This will probably lead to SSL verification errors

Invalid_grant错误有两个常见原因。

  1. 您的服务器时钟与NTP不同步。(解决方法:检查服务器时间,如果不正确,修复它。)

  2. 刷新令牌已超过限制。(解决方案:你无能为力,他们不能有更多的刷新令牌在使用)应用程序可以请求多个刷新令牌。例如,在用户希望在多台机器上安装应用程序的情况下,这很有用。在这种情况下,需要两个刷新令牌,每个安装一个。当刷新令牌的数量超过限制时,旧的令牌将失效。如果应用程序试图使用无效的刷新令牌,则返回invalid_grant错误响应。每对唯一的OAuth 2.0客户端和刷新令牌的限制是25个(注意,此限制可能会更改)。如果应用程序继续为相同的客户机/帐户对请求刷新令牌,一旦发出第26个令牌,先前发出的第一个刷新令牌将失效。第27个请求的刷新令牌将使先前发出的第2个令牌无效,依此类推。

最新更新