参考链接

线程池的用法

通过ThreadPoolExecutor实现异步、延迟执行效果

from flask import Flask
from time import sleep
from concurrent.futures import ThreadPoolExecutor
# DOCS https://docs.python.org/3/library/concurrent.futures.html#concurrent.futures.ThreadPoolExecutor
executor = ThreadPoolExecutor(2)
app = Flask(__name__)
@app.route('/')
def run_jobs():
 # 通过submit函数提交执行的函数到线程池中,submit函数立即返回,不阻塞
 executor.submit(long_task, 'hello', 123)
 return 'long task running.'

def long_task(arg1, arg2):
 print("args: %s %s!" % (arg1, arg2))
 sleep(5)
 print("Task is done!")

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

flask开启多线程支持

(多进程或多线程只能选择一个,不能同时开启)

threaded : 多线程支持,默认为False,即不开启多线程;

在 Flask 应用中,当调用 app.run() 方法时,默认情况下应用程序只会单线程地运行,即每个请求都会依次处理,直到完成后才能处理下一个请求。而使用 threaded=True 参数可以使应用程序在接收到多个请求时能够同时处理,提高应用程序的并发性能。

app.run(threaded=True)

processes:进程数量,默认为1.

app.run(processes=True)