DNS解析域名对aiohttp请求发送耗时的影响

DNS解析域名对aiohttp请求发送耗时的影响

最近学习python+aiohttp做压力测试,遇到问题就是请求的响应时间与真实响应时间不一致。最后分析是由于dns解析耗时导致。

1、不使用dns解析缓存(ipconfig/flushdns),平均每个请求时长在13s左右
2、使用本地hosts指定ip地址后进行请求,平均请求时间在0.74。
以下是简单测试代码
n = 300
url = "https://www.xxxx.com/zh-cn/"

async def task(session,url):
    async with session.get(url) as res:
        await res.text(encoding="utf8")
        return 1

@api_response_time
async def test():
    connector = aiohttp.TCPConnector(limit=20, force_close=True)
    async with aiohttp.ClientSession(connector=connector) as session:
        return await task(session,url)


async def create_task():
    task_list = [asyncio.create_task(test()) for i in range(n)]
    await asyncio.wait(task_list)
    return task_list

loop = asyncio.get_event_loop()
task_res = loop.run_until_complete(create_task())
avg_time = round(sum([i.result()["run_time"] for i in task_res]) / n,2)

print(avg_time)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值