flask的自带web服务器怎么开很多进程或者线程?

发布于 2022-09-11 16:15:54 字数 501 浏览 13 评论 0

目前在做一个多机管理程序。用flask做的web服务器,针对管理请求执行任务然后得到结果返回给前端页面(可以等)。

为了处理方便,没有使用nginx等web服务器。
为了处理方便,同一管理命令,针对每一个主机都从前端发一条命令到后端处理。(涉及到处理结果的显示问题,不想用其他模式)
后端处理就是是ssh登录到其他主机执行命令(时间很长,但是不消耗flask所在主机资源)

我现在要对大约50台机器发命令,现在每次发命令,flask都只开6个进程或者线程来处理6个请求,等几十分钟后再处理后面的请求。
无论使用的是默认的多线程模式,还是改为多进程模式,指定进程数为32、64或者更大,都只有6个进程在处理6个请求,处理完成之后才会处理后面的请求(要等很久)。

我希望前端发50个请求给后端后,后端能够开50个进程或者线程去处理。这样就不需要等这么久了,可不知道怎么处理。

追踪到flask内部进程数设置值processors被赋值给一个对象的max_children属性就没下文了,该属性没在代码中发现被使用。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

很糊涂小朋友 2022-09-18 16:15:54

自己回答
找到源头了,不是flask的问题。处理连接时flask用的werkzeug,werkzeug用得socketserver。
socketserver默认同时最多处理5个请求,但werkzeug已经把值改为128了。
之所以每次只处理6个请求,是因为chrome浏览器限制每次最多6个请求,同时发许多请求只能发出6个,后面的都会等待。
等待发生在浏览器端而不是服务端。

七颜 2022-09-18 16:15:54

run方法中有threaded参数,设置成True就可以了

野稚 2022-09-18 16:15:54

建议还是上 NGINX + WSGI 吧,Flask 自带的服务器只适合开发调试用

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文