使用aiohttp发送POST请求提示session未定义的问题排查
解决aiohttp中"session未定义"的错误
这问题很典型——你遇到的是变量作用域的问题!
你写的GET请求代码是在async with aiohttp.ClientSession() as session:的上下文块里,这个session变量的作用域只限于这个缩进的代码块内部。当你在这个块外面调用session.post()的时候,Python自然找不到这个变量,就会抛出"名称session未定义"的错误。
正确的写法示例
把post请求也放到ClientSession的上下文管理器里面,确保session变量在有效作用域内:
import aiohttp import asyncio async def main(): async with aiohttp.ClientSession() as session: # 执行GET请求 async with session.get('http://httpbin.org/get') as resp: print(resp.status) print(await resp.text()) # 在同一个session上下文内执行POST请求 async with session.post('http://httpbin.org/post', data=b'data') as post_resp: print(post_resp.status) print(await post_resp.text()) asyncio.run(main())
额外提醒
你写的POST请求URL里多了个首尾空格:' http://httpbin.org/post ',这个也要去掉,不然会导致URL解析错误哦!
内容的提问来源于stack exchange,提问作者Tim
相关产品推荐
相关产品推荐

