ASGI vs WSGI,WSGI 兼容性问题

ASGI vs WSGI, WSGI compatibility issues

在阅读 ASGI 规范时,我注意到 WSGI compatibility 段落中的这句话:

WSGI applications, being synchronous, must be run in a threadpool in order to be served, but otherwise their runtime maps onto the HTTP connection scope’s lifetime.

我不明白为什么它必须在线程池中运行?

I don't understand why [a WSGI application] must be run in threadpool?

在 ASGI 服务器中 运行 的 WSGI 应用程序必须 运行 在 单独线程 中。如果在事件循环线程中 运行,单个 WSGI 应用程序将阻塞整个事件循环,包括服务器上的所有其他 ASGI 应用程序 运行。本机 ASGI 应用程序没有这个问题,因为它们是异步的,因此设计为 运行 在事件循环中与其他协程和回调一起。

线程池只是一种优化:它缓存已经创建的线程,这样您就不需要为每个请求生成一个新线程。 (它还提供了线程的最大数量上限 运行ning 一次并对额外的请求进行排队。)