不知道你的 self.recv() 是如何写的,源代码中 create_connection (创建 tcp 连接的方法) 返回的 reader是这样实现的:
async def _wait_for_data(self, func_name):
# 调用通道的 resume_reading 方法,然后等待 数据传输过来(等待 feed_data() or feed_eof() 被调用,self._waiter 就可以结束等待了)
"""Wait until feed_data() or feed_eof() is called.
If stream was paused, automatically resume it.
"""
if self._waiter is not None:
raise RuntimeError(
f'{func_name}() called while another coroutine is '
f'already waiting for incoming data')
assert not self._eof, '_wait_for_data after EOF'
# Waiting for data while paused will make deadlock, so prevent it.
# This is essential for readexactly(n) for case when n > self._limit.
if self._paused: # 如果现在是暂停状态
self._paused = False # 修改为False
self._transport.resume_reading()