我正在学习python异步。我的问题是我试图以流媒体内容的形式获得答案,但由于我没有尝试,空字节总是出现。是什么原因?我究竟做错了什么?我选择了 Github API 作为例子。
我使用版本 python 3.8,aiohttp 3.7.4。
这是我的代码: import json import aiohttp import asyncio async def get_response(): url = 'https://api.github.com/events' async with aiohttp.ClientSession() as session: task1 = asyncio.create_task(make_request() session, url)) result = await asyncio.gather(task1) 返回结果
async def make_request(session, url):
async with session.get(url) as resp:
json_resp = await resp.json(loads=json.loads)
bytes_resp = await resp.content.read(10)
print(json_resp)
print(bytes_resp)
if __name__ == '__main__':
loop = asyncio.get_event_loop()
loop.run_until_complete(get_response())
非常感谢。
闻听此事在这里输入图像描述
您不能将响应作为 JSON 读取一次,又作为字节读取一次,因为此时它已经被消耗了。(aiohttp 故意不在内部缓冲响应数据。)
如果两者都需要,
bytes_resp = await resp.content.read()
json_resp = json.loads(bytes_resp)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句