我目前在我的Flask应用程序中使用系统范围的互斥锁来处理多处理。
由于GIL,最终由于多处理已经为我提供了并发性,我也不必担心应用程序中的 multithreading 。
我可以让Flask开发服务器运行单线程吗?
顺便说一句,如果我使用Gunicorn进行部署,是否可以这样做(即运行多个进程,而所有进程都是单线程)?
答案 0 :(得分:3)
您可以使用参数'workers'和'threads'与gunicorn运行应用程序
gunicorn --workers=5 --threads=1 main:app
这意味着所有工作程序都将使用单线程运行
答案 1 :(得分:1)
默认情况下,flask开发服务器仅是单线程的,是的,您可以将Unicorn与from sklearn import datasets
from sklearn.preprocessing import StandardScaler
from sklearn.cluster import KMeans
iris = datasets.load_iris()
X = iris.data
scaler = StandardScaler()
X_std = scaler.fit_transform(X)
clt = KMeans(n_clusters=3, random_state=0, n_jobs=-1)
model = clt.fit(X_std)
和workers
标志一起使用
thread
答案 2 :(得分:0)
查看源代码后,我发现Flask具有--without-threads
参数,该参数是由于this bug report而添加的。
. . .
flask run --without-threads . . .
据我所知,似乎并没有由于错误修复而对Flask文档进行了更新,因此最好的文档可以在错误报告中找到。您可以在运行时通过flask.request.is_multithread
查询此属性。