这是_socket2.py中的pypy gevent源代码:
1 def send(self, data, flags=0, timeout=timeout_default):
2 if timeout is timeout_default:
3 timeout = self.timeout
4 try:
5 return self._sock.send(data, flags)
6 except error as ex:
7 if ex.args[0] not in _socketcommon.GSENDAGAIN or timeout == 0.0:
8 raise
9 sys.exc_clear()
10 self._wait(self._write_event)
11 try:
12 return self._sock.send(data, flags)
13 except error as ex2:
14 if ex2.args[0] == EWOULDBLOCK:
15 return 0
16 raise
我不知道为什么套接字在等待_write_event
(第10行)之后会在第12行阻塞,谢谢。