python-3.x isinstance在相同的类类型上失败

vaqhlq81  于 2023-08-08  发布在  Python
关注(0)|答案(1)|浏览(107)

有人能帮我弄明白吗?
以google python sdk为例,根据Google重试策略(https://cloud.google.com/python/docs/reference/storage/latest/retry_timeout):

from google.api_core import exceptions
from google.api_core.retry import Retry

_MY_RETRIABLE_TYPES = (
   exceptions.TooManyRequests,  # 429
   exceptions.InternalServerError,  # 500
   exceptions.BadGateway,  # 502
   exceptions.ServiceUnavailable,  # 503
)

def is_retryable(exc):
    return isinstance(exc, _MY_RETRIABLE_TYPES)

my_retry_policy = Retry(predicate=is_retryable)

字符串
为什么在测试is_retryable时会出现以下情况?

exceptions.TooManyRequests==exceptions.TooManyRequests -> True
is_retryable(exceptions.TooManyRequests) -> False 
is_retryable(429) -> False 
is_retryable(exceptions.TooManyRequests.code) -> False
is_retryable(exceptions.TooManyRequests.code.value) -> False

w8ntj3qf

w8ntj3qf1#

你的元组由许多 * 类型 * 组成。类型不是其自身的示例,也不是整数值的任何类型的“别名”。您需要将其中一个类型的 instance 传递给is_retryable

>>> is_retryable(exceptions.TooManyRequests())
True

字符串

相关问题