并发数 10,偶数请求立即完成,奇数请求被挂起超过 120 秒,是使用方法不对吗?
import asyncio
import aiohttp
import time
async def get(s, i):
start = time.time()
async with s.get('URL') as r:
await r.read()
print(i, ': {} s'.format(round(time.time() - start, 2)))
async def test():
async with aiohttp.ClientSession() as s:
await asyncio.gather(*[get(s, i) for i in range(10)])
if __name__ == "__main__":
loop = asyncio.get_event_loop()
loop.run_until_complete(test())
结果
0 : 0.38 s
8 : 0.4 s
2 : 0.57 s
6 : 0.6 s
4 : 0.6 s
1 : 129.49 s
9 : 129.5 s
3 : 129.52 s
7 : 129.57 s
5 : 129.63 s
1
Kobayashi 2021-06-19 10:19:56 +08:00
无法复现。测试 URL https://httpbin.org/headers
❯ python test_aiohttp.py 7 : 1.16 s 1 : 1.16 s 4 : 1.16 s 9 : 1.16 s 6 : 1.16 s 2 : 1.17 s 8 : 1.17 s 3 : 1.26 s 5 : 1.26 s 0 : 1.27 s |
2
Multicom OP |
4
Multicom OP @onlyzdd 请问 Python 和 aiohttp 分别是什么版本?当前环境下一直存在该问题
``` root@host ~ # python3 -V Python 3.7.3 root@host ~ # pip3 show aiohttp | grep Version Version: 3.7.4.post0 root@host ~ # uname -a Linux Debian-104-buster-64-minimal 5.12.10-xanmod1-cacule ... ``` |
6
Kobayashi 2021-06-22 11:16:44 +08:00
https://www.google.com
❯ python test_aiohttp.py 0 : 1.88 s 7 : 1.89 s 6 : 1.9 s 9 : 1.93 s 8 : 1.94 s 4 : 1.97 s 3 : 1.97 s 2 : 1.97 s 1 : 2.02 s 5 : 2.03 s https://yandex.ru ❯ python test_aiohttp.py 0 : 3.08 s 1 : 3.07 s 5 : 3.1 s 7 : 3.14 s 3 : 3.16 s 4 : 3.16 s 2 : 3.17 s 8 : 3.17 s 6 : 3.18 s 9 : 3.21 s |