flask的自带web服务器怎么开很多进程或者线程?
目前在做一个多机管理程序。用flask做的web服务器,针对管理请求执行任务然后得到结果返回给前端页面(可以等)。
为了处理方便,没有使用nginx等web服务器。
为了处理方便,同一管理命令,针对每一个主机都从前端发一条命令到后端处理。(涉及到处理结果的显示问题,不想用其他模式)
后端处理就是是ssh登录到其他主机执行命令(时间很长,但是不消耗flask所在主机资源)
我现在要对大约50台机器发命令,现在每次发命令,flask都只开6个进程或者线程来处理6个请求,等几十分钟后再处理后面的请求。
无论使用的是默认的多线程模式,还是改为多进程模式,指定进程数为32、64或者更大,都只有6个进程在处理6个请求,处理完成之后才会处理后面的请求(要等很久)。
我希望前端发50个请求给后端后,后端能够开50个进程或者线程去处理。这样就不需要等这么久了,可不知道怎么处理。
追踪到flask内部进程数设置值processors被赋值给一个对象的max_children属性就没下文了,该属性没在代码中发现被使用。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
自己回答
找到源头了,不是flask的问题。处理连接时flask用的werkzeug,werkzeug用得socketserver。
socketserver默认同时最多处理5个请求,但werkzeug已经把值改为128了。
之所以每次只处理6个请求,是因为chrome浏览器限制每次最多6个请求,同时发许多请求只能发出6个,后面的都会等待。
等待发生在浏览器端而不是服务端。
run方法中有threaded参数,设置成True就可以了
建议还是上 NGINX + WSGI 吧,Flask 自带的服务器只适合开发调试用