Кеш aiohttp.ClientSession не работает - PullRequest
0 голосов
/ 09 мая 2020

Я надеюсь использовать aiohttp.ClientSession кешировать мое соединение после того, как оно будет быстрее, но я обнаружил, что когда я использую asyncio.sleep, имитирую интервал времени более 10 с, соединение будет похоже на первое подключение, время меньше 10сек будет как кешировано. Как мне это сделать?

async def main():
    conn = aiohttp.TCPConnector(ttl_dns_cache=None,limit_per_host=10)
    trace_config = aiohttp.TraceConfig()
    trace_config.on_request_start.append(on_request_start)
    trace_config.on_request_end.append(on_request_end)
    session = aiohttp.ClientSession(connector=conn,trace_configs=[trace_config])

    await asyncio.create_task(add_task(session,4))
    await asyncio.sleep(15)
    await asyncio.create_task(add_task(session))
    await asyncio.create_task(add_task(session))


async def on_request_start(session, trace_config_ctx, params):
    start_time = time.perf_counter()
    trace_config_ctx.start = start_time

async def on_request_end(session, trace_config_ctx, params):
    end_time = time.perf_counter()
    elapsed = end_time - trace_config_ctx.start
    print("Request took {}".format(elapsed))

async def add_task(session,num=4):
    task = []
    for i in range(num):
        task.append(fetch('xxxx.com',session))
    start_time = time.perf_counter()
    results = await asyncio.gather(*task)
    print('=====================')

if __name__ == '__main__':
    uvloop.install()
    asyncio.run(main())

Вывод:

Request took 0.23638559999999997

Request took 0.24373

Request took 0.2442225

Request took 0.2806297999999998

=====================

Request took 0.17726310000000112

Request took 0.18133539999999826

Request took 0.18915810000000022

Request took 0.22994100000000017

===================== 


**USE 'await asyncio.sleep(5)' OR NOT USE IT**

Request took 0.24224590000000013

Request took 0.24209349999999996

Request took 0.24268460000000003

Request took 0.261196

=====================

Request took 0.04700550000000003

Request took 0.049366400000000255

Request took 0.05276870000000056

Request took 0.051986700000000496

=====================
...