Add Request.stream

This commit is contained in:
38elements
2017-05-05 20:09:32 +09:00
parent 7cf3d49f00
commit ef2cc7ebf5
9 changed files with 220 additions and 12 deletions

View File

@@ -0,0 +1,10 @@
import requests
# Warning: This is a heavy process.
data = ""
for i in range(1, 250000):
data += str(i)
r = requests.post('http://127.0.0.1:8000/bp_stream', data=data)
print(r.text)

View File

@@ -0,0 +1,40 @@
from sanic import Sanic
from sanic.blueprints import Blueprint
from sanic.response import stream, text
bp = Blueprint('blueprint_request_stream')
app = Sanic('request_stream')
@app.stream('/stream')
async def handler(request):
async def streaming(response):
while True:
body = await request.stream.get()
if body is None:
break
body = body.decode('utf-8').replace('1', 'A')
response.write(body)
return stream(streaming)
@app.get('/get')
async def get(request):
return text('OK')
@bp.stream('/bp_stream')
async def bp_handler(request):
result = ''
while True:
body = await request.stream.get()
if body is None:
break
result += body.decode('utf-8').replace('1', 'A')
return text(result)
app.blueprint(bp)
if __name__ == '__main__':
app.run(host='127.0.0.1', port=8000)