欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

python3 协程Unclosed client session client_session:

程序员文章站 2022-03-26 11:44:45
学习了崔大神的异步协程的使用方法,代码运行的时候出现如标题的警告很是烦人,在这里记录下解决方法。 解决方法就是在session.close()之前加await 首先看下代码: 定义一个flask服务器 from flask import Flask import time app = Flask(_ ......

学习了崔大神的异步协程的使用方法,代码运行的时候出现如标题的警告很是烦人,在这里记录下解决方法。

解决方法就是在session.close()之前加await

首先看下代码:

定义一个flask服务器

from flask import flask
import time

app = flask(__name__)


@app.route('/')
def index():
    time.sleep(3)
    return 'hello!'

if __name__ == '__main__':
    app.run(threaded=true)

运行后用python去异步请求:

import asyncio
import aiohttp
import time

start = time.time()


async def get(url):
    session = aiohttp.clientsession()
    response = await session.get(url)
    result = await response.text()
    session.close()
    return result


async def request():
    url = 'http://127.0.0.1:5000'
    print('waiting for', url)
    result = await get(url)
    print('get response from', url, 'result:', result)


tasks = [asyncio.ensure_future(request()) for _ in range(5)]
loop = asyncio.get_event_loop()
loop.run_until_complete(asyncio.wait(tasks))

end = time.time()
print('cost time:', end - start)

控制台输出:

python3 协程Unclosed client session client_session: <aiohttp.client.ClientSession object at 0x0918BAC0>

 

 一片警告,应该是版本更新,所以用法有点不同

解决:session.close()前加await

await session.close()

python3 协程Unclosed client session client_session: <aiohttp.client.ClientSession object at 0x0918BAC0>

 

 页面清爽很多。。。

参考:

 » python中异步协程的使用方法介绍