Python中flask线程池
线程池的用法
通过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)
本文是原创文章,采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自 刘哥还在学