并发数 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 |