re-added request_stream example.
This commit is contained in:
parent
4b5320a8f0
commit
349c108ebc
10
examples/request_stream/client.py
Normal file
10
examples/request_stream/client.py
Normal 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://0.0.0.0:8000/stream', data=data)
|
||||||
|
print(r.text)
|
65
examples/request_stream/server.py
Normal file
65
examples/request_stream/server.py
Normal file
|
@ -0,0 +1,65 @@
|
||||||
|
from sanic import Sanic
|
||||||
|
from sanic.views import CompositionView
|
||||||
|
from sanic.views import HTTPMethodView
|
||||||
|
from sanic.views import stream as stream_decorator
|
||||||
|
from sanic.blueprints import Blueprint
|
||||||
|
from sanic.response import stream, text
|
||||||
|
|
||||||
|
bp = Blueprint('blueprint_request_stream')
|
||||||
|
app = Sanic('request_stream')
|
||||||
|
|
||||||
|
|
||||||
|
class SimpleView(HTTPMethodView):
|
||||||
|
|
||||||
|
@stream_decorator
|
||||||
|
async def post(self, request):
|
||||||
|
result = ''
|
||||||
|
while True:
|
||||||
|
body = await request.stream.get()
|
||||||
|
if body is None:
|
||||||
|
break
|
||||||
|
result += body.decode('utf-8')
|
||||||
|
return text(result)
|
||||||
|
|
||||||
|
|
||||||
|
@app.post('/stream', stream=True)
|
||||||
|
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)
|
||||||
|
|
||||||
|
|
||||||
|
@bp.put('/bp_stream', stream=True)
|
||||||
|
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)
|
||||||
|
|
||||||
|
|
||||||
|
async def post_handler(request):
|
||||||
|
result = ''
|
||||||
|
while True:
|
||||||
|
body = await request.stream.get()
|
||||||
|
if body is None:
|
||||||
|
break
|
||||||
|
result += body.decode('utf-8')
|
||||||
|
return text(result)
|
||||||
|
|
||||||
|
app.blueprint(bp)
|
||||||
|
app.add_route(SimpleView.as_view(), '/method_view')
|
||||||
|
view = CompositionView()
|
||||||
|
view.add(['POST'], post_handler, stream=True)
|
||||||
|
app.add_route(view, '/composition_view')
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
app.run(host='0.0.0.0', port=8000)
|
Loading…
Reference in New Issue
Block a user