我正在使用 DELETE 和 POST 请求(包括 json)ping 公司的内部 API。使用请求库执行此操作时,一切正常。
使用 asyncio.gather() 使用 aiohttp 执行此操作时,我经常收到“500”错误响应:“失败...:...异常”。 DELETE 请求每次都有效,但 POST 请求无效。第一个 POST 请求大约有 10% 的时间返回此错误。第二个或第三个 POST 请求大约 50% 的时间返回错误,如果有 10 个或更多请求,每个请求返回错误的概率高达 90%。错误是随机的:每次重试都会发生在列表中的不同请求上。
我想可能是异步请求的速度,但是当我在请求之间 time.sleep(1) 时,我得到了相同的结果。然后我查看服务器是否正在读取 json,但是当我排除发布的 json 时,我得到了一个不同的错误,即服务器无法读取 json。
还能是什么?
编辑:这是基本的外推代码:
async with aiohttp.ClientSession() as session:
await asyncio.gather(*[ping_api(session, item) for item in items])
async def ping_api(session, item)
data = {'foo': item}
try:
r = await session.post('https://random-company', headers=headers, cookies=cookies, json=data)
如果我将 ping_api 中的 await aiohttp 会话替换为常规请求会话,则可以完美地检索数据。