在阅读ASGI规范时,我在WSGI兼容性段落中注意到这句话:
WSGI应用程序是同步的,必须在线程池中运行才能得到服务,但否则它们的运行时映射到HTTP连接作用域的生存期。
我不明白为什么它必须在线程池中运行?
发布于 2020-09-18 09:38:04
我不明白为什么WSGI应用程序必须在线程池中运行?
在ASGI服务器中运行的WSGI应用程序必须在单独的线程中运行。如果它在事件循环线程中运行,一个WSGI应用程序将阻塞整个事件循环,包括在服务器上运行的所有其他ASGI应用程序。本机ASGI应用程序不存在此问题,因为它们是异步的,因此设计为与其他协同和回调一起在事件循环中运行。
线程池只是一个优化:它缓存已经创建的线程,这样您就不需要为每个请求生成一个新线程。(它还为同时运行的最大线程数提供了一个上限,并对额外的请求进行排队。)
https://stackoverflow.com/questions/63951911
复制相似问题