Python3.7 在可用性方面,标注现在支持向前引用,以使以下句法有效:
class C:
@classmethod
def from_string(cls, source: str) -> C:
...
def validate_b(self, obj: B) -> bool:
...
class B:
...
由于此修改会破坏兼容性,在 Python 3.7 中此种新的行为需要在每个模块层级上使用 future 导入来启用:
from __future__ import annotations
开发中使用Demo:
async def _retry(self, error_msg):
if self.retry_times > 0:
retry_times = self.request_config.get('RETRIES',3) - self.retry_times + 1
self.logger.error(
f'<Retry url: {self.url}>, Retry times: {retry_times}, Retry message: {error_msg}>')
self.retry_times -= 1
retry_func = self.request_config.get('RETRY_FUNC')
if retry_func and iscoroutinefunction(retry_func):
request_ins = await retry_func(weakref.proxy(self))
if isinstance(request_ins, Request):
return await request_ins.fetch()
return await self.fetch()