运行Flask单线程

时间:2019-08-15 10:06:17

标签: python flask

我目前在我的Flask应用程序中使用系统范围的互斥锁来处理多处理

由于GIL,最终由于多处理已经为我提供了并发性,我也不必担心应用程序中的 multithreading

我可以让Flask开发服务器运行单线程吗?

顺便说一句,如果我使用Gunicorn进行部署,是否可以这样做(即运行多个进程,而所有进程都是单线程)?

3 个答案:

答案 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查询此属性。