你的位置:首页 > 信息动态 > 新闻中心
信息动态
联系我们

flask 中使用asyncio 处理请求

2021/12/20 17:19:58
import aiohttp
import asyncio
import async_timeout
from flask import Flask

loop = asyncio.get_event_loop()
app = Flask(__name__)

async def fetch(url):
    async with aiohttp.ClientSession(connector=aiohttp.TCPConnector(ssl=False)) as session, async_timeout.timeout(100):
        async with session.get(url) as response:
            return await response.text()

def fight(responses):
    return "done"

@app.route("/")
def index():
    # perform multiple async requests concurrently
    try:
        loop = asyncio.get_event_loop()
    except RuntimeError as er:
        print(er.args[0], 'create a new EventLoop')
        loop = asyncio.new_event_loop()
        asyncio.set_event_loop(loop)
 
    responses = loop.run_until_complete(asyncio.gather(
        fetch("https://baidu.com")
    ))

    # do something with the results
    return fight(responses)

if __name__ == "__main__":
    app.run(debug=False, use_reloader=False)

部分参考:https://yanbin.blog/how-flask-work-with-asyncio/