为什么这个flask代码会异步运行?

问题描述 投票:0回答:0

我在想是不是应该通过flask来使用asyncio和aiomysql,所以做了一个简单的实验,但是有一点没看懂

我知道 flask 在单线程上运行并顺序处理它。所以在处理一个请求的时候,我明白如果有IO bound,flask就不能再处理另一个请求了,但是结果和我想的不一样。这是什么原因。

from flask import Flask, Response, jsonify
import asyncio
import aiomysql
import pymysql

app = Flask(__name__)


@app.route('/sync2')
def hihi2():
    print('IO bound start!')
    cur = conn.cursor()
    cur.execute('''select Count(*)
    from fruit_defect
    WHERE date between '2022-11-22' and '2022-11-25'
    ''')
    print('IO Bound finish!')
    result = cur.fetchall()
    print(result)
    cur.close()
    return jsonify(result)


@app.route('/sync3')
def hihi3():
    print('CPU BOUND start!')
    c = 0
    for _ in range(1000000):
        c += 1
    print('CPU bound finish!')
    
    return jsonify(1)

结果图 result

python flask asynchronous
© www.soinside.com 2019 - 2024. All rights reserved.