我有那个代码
async with aiohttp.ClientSession() as session:
content = 'none'
while content == 'none':
try:
async with session.get(url) as resp:
resp.raise_for_status()
content = await resp.json()
except aiohttp.ClientError:
await asyncio.sleep(1)
except Exception as e:
print(e)
await asyncio.sleep(1)
Run Code Online (Sandbox Code Playgroud)
我想在结果良好时发出请求,但如果我编译它,有时结果是“无”。怎么让它变得更好。
我用async-retrying这个。您使用装饰器标记请求函数@retry,如果引发异常,它将重新运行。例子:
import asyncio
import aiohttp
from async_retrying import retry
@retry(attempts=100)
async def req(session, url):
async with session.get(url) as resp:
resp.raise_for_status()
return await resp.json()
async def main():
async with aiohttp.ClientSession() as session:
payload = await req(session, "http://eu.httpbin.org/get")
print("payload received:", payload)
if __name__ == "__main__":
asyncio.run(main())
Run Code Online (Sandbox Code Playgroud)