Add Request.cancel_stream()

This commit is contained in:
38elements
2017-06-06 21:07:32 +09:00
parent 639c9f579d
commit e87c29a248
5 changed files with 61 additions and 5 deletions

View File

@@ -6,7 +6,7 @@ from sanic.views import HTTPMethodView
from sanic.views import stream as stream_decorator
from sanic.response import stream, text
data = "abc" * 100000
data = 'abc' * 100000
def test_request_stream_method_view():
@@ -49,6 +49,21 @@ def test_request_stream_app():
app = Sanic('test_request_stream_app')
contents = []
@app.post('/cancel_stream', stream=True)
async def cancel_stream(request):
assert isinstance(request.stream, asyncio.Queue)
request.cancel_stream()
result = ''
while True:
body = await request.stream.get()
contents.append(body)
if body is None:
break
result += body.decode('utf-8')
return text(result)
@app.get('/get')
async def get(request):
assert request.stream is None
@@ -122,6 +137,8 @@ def test_request_stream_app():
assert app.is_request_stream is True
assert len(contents) == 0
request, response = app.test_client.get('/get')
assert response.status == 200
assert response.text == 'GET'