有人可以帮忙解释一下为什么python aiohttp返回的响应内容多于request.get吗?

时间:2019-01-21 13:22:32

标签: python aiohttp

最近,我正在看python aiohttp库,在它周围玩耍,并与python请求进行比较。这是代码:

import aiohttp
import asyncio
import requests

request_url = 'http://www.baidu.com'
requests_resp = requests.get(request_url)

async def fetch(session, url):
    async with session.get(url) as response:
        return await response.text()

async def main():
    async with aiohttp.ClientSession() as session:
        aio_resp = await fetch(session, request_url)
        print('aio_resp_length =', len(aio_resp))

loop = asyncio.get_event_loop()
loop.run_until_complete(main())

print('requests_resp_length = ', len(requests_resp.text))

响应长度差异很大

aio_resp_length = 152576
requests_resp_length =  2381

不确定aiohttp.session.get中会发生什么,但是结果并不总是这样。当您将requests_url更改为http://www.example.com时, 响应长度是相同的。有人可以告诉我这里发生了什么事吗?

欢呼

1 个答案:

答案 0 :(得分:0)

因为aiohttp的响应中包含换行符,而请求中没有换行符。

您可以像这样检查自己的回复

print('requests_resp_length = ', requests_resp.text[0:100])

print('aio_resp_length =', aio_resp[0:100])