mirror of
https://github.com/python/cpython.git
synced 2025-07-23 03:05:38 +00:00
GH-74116: Allow multiple drain waiters for asyncio.StreamWriter (GH-94705) (#96395)
(cherry picked from commit e5b2453e61
)
Co-authored-by: Kumar Aditya <59607654+kumaraditya303@users.noreply.github.com>
Co-authored-by: Kumar Aditya <59607654+kumaraditya303@users.noreply.github.com>
This commit is contained in:
parent
126ec34558
commit
2e9f29e6a6
3 changed files with 36 additions and 19 deletions
|
@ -864,6 +864,25 @@ os.close(fd)
|
|||
self.assertEqual(cm.filename, __file__)
|
||||
self.assertIs(protocol._loop, self.loop)
|
||||
|
||||
def test_multiple_drain(self):
|
||||
# See https://github.com/python/cpython/issues/74116
|
||||
drained = 0
|
||||
|
||||
async def drainer(stream):
|
||||
nonlocal drained
|
||||
await stream._drain_helper()
|
||||
drained += 1
|
||||
|
||||
async def main():
|
||||
loop = asyncio.get_running_loop()
|
||||
stream = asyncio.streams.FlowControlMixin(loop)
|
||||
stream.pause_writing()
|
||||
loop.call_later(0.1, stream.resume_writing)
|
||||
await asyncio.gather(*[drainer(stream) for _ in range(10)])
|
||||
self.assertEqual(drained, 10)
|
||||
|
||||
self.loop.run_until_complete(main())
|
||||
|
||||
def test_drain_raises(self):
|
||||
# See http://bugs.python.org/issue25441
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue