Skip to content

Commit cd20de6

Browse files
committed
add custom chunk size support
1 parent 0055d0b commit cd20de6

File tree

2 files changed

+18
-1
lines changed

2 files changed

+18
-1
lines changed

aiohttp/web.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -392,6 +392,7 @@ def __init__(self, *, status=200, reason=None):
392392
self._body = None
393393
self._keep_alive = None
394394
self._chunked = False
395+
self._chunk_size = None
395396
self._headers = CIMultiDict()
396397
self._cookies = http.cookies.SimpleCookie()
397398
self.set_status(status, reason)
@@ -434,9 +435,10 @@ def keep_alive(self):
434435
def force_close(self):
435436
self._keep_alive = False
436437

437-
def enable_chunked_encoding(self):
438+
def enable_chunked_encoding(self, chunk_size=None):
438439
"""Enables automatic chunked transfer encoding."""
439440
self._chunked = True
441+
self._chunk_size = chunk_size
440442

441443
@property
442444
def headers(self):
@@ -568,6 +570,8 @@ def start(self, request):
568570

569571
if self._chunked:
570572
resp_impl.enable_chunked_encoding()
573+
if self._chunk_size:
574+
resp_impl.add_chunking_filter(self._chunk_size)
571575

572576
headers = self.headers.items()
573577
for key, val in headers:

tests/test_web_response.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,19 @@ def test_chunked_encoding(self, ResponseImpl):
127127
msg = resp.start(req)
128128
self.assertTrue(msg.chunked)
129129

130+
@mock.patch('aiohttp.web.ResponseImpl')
131+
def test_chunk_size(self, ResponseImpl):
132+
req = self.make_request('GET', '/')
133+
resp = StreamResponse()
134+
self.assertFalse(resp.chunked)
135+
136+
resp.enable_chunked_encoding(chunk_size=8192)
137+
self.assertTrue(resp.chunked)
138+
139+
msg = resp.start(req)
140+
self.assertTrue(msg.chunked)
141+
self.assertIsNotNone(msg.filter)
142+
130143
def test_write_non_byteish(self):
131144
resp = StreamResponse()
132145
resp.start(self.make_request('GET', '/'))

0 commit comments

Comments
 (0)