Python 是什么使得WSGI本质上是同步的?
(如果我犯了错误,请纠正我) WSGI是一个用于基于python的web应用程序的应用程序。但它是 说WSGI本质上是同步的。所以,甚至像龙卷风这样的东西 将处理WSGI应用程序。这意味着,wsgi标准 python web应用程序同步 我对异步程序如何在内部工作没有很好的理解。 我所知道的是,异步程序不会等待I/O任务,直到它完成为止 不涉及Python 是什么使得WSGI本质上是同步的?,python,asynchronous,wsgi,synchronous,Python,Asynchronous,Wsgi,Synchronous,(如果我犯了错误,请纠正我) WSGI是一个用于基于python的web应用程序的应用程序。但它是 说WSGI本质上是同步的。所以,甚至像龙卷风这样的东西 将处理WSGI应用程序。这意味着,wsgi标准 python web应用程序同步 我对异步程序如何在内部工作没有很好的理解。 我所知道的是,异步程序不会等待I/O任务,直到它完成为止 不涉及I/O任务的其他任务 如果这是正确的,一个处理wsgi应用程序的非常基本的python web服务器将 是这样的: import socket cla
I/O
任务的其他任务
如果这是正确的,一个处理wsgi应用程序的非常基本的python web服务器将
是这样的:
import socket
class Server(object):
def __init__(self, host, port, app):
self.socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
self.socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
self.socket.bind((host, port))
self.socket.listen(5)
self.app = app
def serve(self):
while True:
client, addr = self.socket.accept()
request = client.recv()
response_body = self.handle_app(request)
client.sendall(response_body)
client.close()
def handle_app(self, request):
# processing request stuff
environ = self.environ_logic() # some logics
start_response = self.start_response_logic() # some logics
return self.app(environ, start_response)
那么,是什么使得WSGI本质上是同步的呢?举个例子,哪个部分
使其不异步
?还有,是否可以创建一个web服务器(在python中)
能够异步处理wsgi应用程序吗?Web服务器和它调用的Python进程之间的接口是同步的——就像wsgi调用进程正在阻塞一样,等待后端的响应,然后再继续。Python代码中发生的任何事情都可以是同步的、异步的,也可以执行任何操作——但是Web服务器的工作线程将阻塞,直到收到响应为止
Webserver thread YourCode
| |
| --callout to WSGI code--> |
| |
| [Do stuff ...]
[blocking] [ ... ]
| [Do stuff ...]
| |
| Done!
| <--Your response to the server-- |
Proceed!
Webserver线程您的代码
| |
|--调用WSGI代码-->|
| |
|[做事…]
[阻止][…]
|[做事…]
| |
|完成了!
|