MCPcopy
hub / github.com/benoitc/gunicorn / FlowControl

Class FlowControl

gunicorn/asgi/protocol.py:85–122  ·  view source on GitHub ↗

Manage transport-level write flow control. Blocks send() when transport buffer exceeds high water mark, preventing memory issues with large streaming responses.

Source from the content-addressed store, hash-verified

83
84
85class FlowControl:
86 """Manage transport-level write flow control.
87
88 Blocks send() when transport buffer exceeds high water mark,
89 preventing memory issues with large streaming responses.
90 """
91 __slots__ = ('_transport', 'read_paused', 'write_paused', '_is_writable_event')
92
93 def __init__(self, transport):
94 self._transport = transport
95 self.read_paused = False
96 self.write_paused = False
97 self._is_writable_event = asyncio.Event()
98 self._is_writable_event.set()
99
100 async def drain(self):
101 """Wait until transport is writable."""
102 await self._is_writable_event.wait()
103
104 def pause_reading(self):
105 if not self.read_paused:
106 self.read_paused = True
107 self._transport.pause_reading()
108
109 def resume_reading(self):
110 if self.read_paused:
111 self.read_paused = False
112 self._transport.resume_reading()
113
114 def pause_writing(self):
115 if not self.write_paused:
116 self.write_paused = True
117 self._is_writable_event.clear()
118
119 def resume_writing(self):
120 if self.write_paused:
121 self.write_paused = False
122 self._is_writable_event.set()
123
124
125def _get_cached_date_header():

Callers 1

connection_madeMethod · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected