使用 threaded=True 同时处理 Flask 请求
- 2025-03-14 08:57:00
- admin 原创
- 55
问题描述:
传球到底起什么threaded = True
作用app.run()
?
我的应用程序处理来自用户的输入,这需要一些时间。在此期间,应用程序无法处理其他请求。我已经用 测试了我的应用程序threaded=True
,它允许我同时处理多个请求。
解决方案 1:
从 Flask 1.0 开始,Flask 附带的 WSGI 服务器默认以线程模式运行。
在 1.0 之前的版本中,或者如果您禁用线程,服务器将以单线程模式运行,并且一次只能处理一个请求。任何并行请求都必须等待,直到它们可以被处理,如果您尝试从请求联系您自己的服务器,这可能会导致问题。
每个请求threaded=True
都在一个新线程中处理。您的服务器可以同时处理多少个线程完全取决于您的操作系统以及它对每个进程的线程数设置的限制。该实现使用类SocketServer.ThreadingMixIn
,它对它可以启动的线程数没有限制。
请注意,Flask 服务器仅供开发使用。它不是可用于生产的服务器。不要依赖它在更广泛的网络上运行您的网站。请使用合适的 WSGI 服务器(如gunicorn或uWSGI)。
解决方案 2:
我的应用程序能够使用此语句并发处理多少个请求?
这在很大程度上取决于您的应用程序。每个新请求都会启动一个线程 - 这取决于您的机器可以处理多少个线程。我没有看到限制线程数量的选项(如 uwsgi 在生产部署中提供的)。
使用它有什么缺点?如果我不希望同时收到多个请求,我可以继续使用它吗?
从单线程切换到多线程可能会导致并发错误...如果您使用此功能,请小心处理全局对象(请参阅文档中的 g 对象!)和状态。
相关推荐
热门文章
项目管理软件有哪些?
热门标签
曾咪二维码
扫码咨询,免费领取项目管理大礼包!
云禅道AD