Updated examples for 0.5.0

This commit is contained in:
Shawn Niederriter 2017-04-11 20:34:55 +00:00
parent 9d3bb4a37a
commit adb7331670
8 changed files with 58 additions and 35 deletions

View File

@ -1,9 +1,7 @@
""" """
Example intercepting uncaught exceptions using Sanic's error handler framework. Example intercepting uncaught exceptions using Sanic's error handler framework.
This may be useful for developers wishing to use Sentry, Airbrake, etc. This may be useful for developers wishing to use Sentry, Airbrake, etc.
or a custom system to log and monitor unexpected errors in production. or a custom system to log and monitor unexpected errors in production.
First we create our own class inheriting from Handler in sanic.exceptions, First we create our own class inheriting from Handler in sanic.exceptions,
and pass in an instance of it when we create our Sanic instance. Inside this and pass in an instance of it when we create our Sanic instance. Inside this
class' default handler, we can do anything including sending exceptions to class' default handler, we can do anything including sending exceptions to
@ -39,7 +37,7 @@ server's error_handler to an instance of our CustomHandler
""" """
from sanic import Sanic from sanic import Sanic
from sanic.response import json from sanic import response
app = Sanic(__name__) app = Sanic(__name__)
@ -52,7 +50,7 @@ async def test(request):
# Here, something occurs which causes an unexpected exception # Here, something occurs which causes an unexpected exception
# This exception will flow to our custom handler. # This exception will flow to our custom handler.
1 / 0 1 / 0
return json({"test": True}) return response.json({"test": True})
app.run(host="0.0.0.0", port=8000, debug=True) app.run(host="0.0.0.0", port=8000, debug=True)

View File

@ -2,7 +2,7 @@
# curl -d '{"name": "John Doe"}' localhost:8000 # curl -d '{"name": "John Doe"}' localhost:8000
from sanic import Sanic from sanic import Sanic
from sanic.response import html from sanic import response
from jinja2 import Template from jinja2 import Template
template = Template('Hello {{ name }}!') template = Template('Hello {{ name }}!')
@ -12,7 +12,7 @@ app = Sanic(__name__)
@app.route('/') @app.route('/')
async def test(request): async def test(request):
data = request.json data = request.json
return html(template.render(**data)) return response.html(template.render(**data))
app.run(host="0.0.0.0", port=8000) app.run(host="0.0.0.0", port=8080, debug=True)

View File

@ -0,0 +1,26 @@
"""
Modify header or status in response
"""
from sanic import Sanic
from sanic import response
app = Sanic(__name__)
@app.route('/')
def handle_request(request):
return response.json(
{'message': 'Hello world!'},
headers={'X-Served-By': 'sanic'},
status=200
)
@app.route('/unauthorized')
def handle_request(request):
return response.json(
{'message': 'You are not authorized'},
headers={'X-Served-By': 'sanic'},
status=404
)
app.run(host="0.0.0.0", port=8000, debug=True)

View File

@ -1,6 +1,5 @@
from sanic import Sanic from sanic import Sanic
from sanic.response import text from sanic import response
import json
import logging import logging
logging_format = "[%(asctime)s] %(process)d-%(levelname)s " logging_format = "[%(asctime)s] %(process)d-%(levelname)s "
@ -18,6 +17,6 @@ sanic = Sanic()
@sanic.route("/") @sanic.route("/")
def test(request): def test(request):
log.info("received request; responding with 'hey'") log.info("received request; responding with 'hey'")
return text("hey") return response.text("hey")
sanic.run(host="0.0.0.0", port=8000) sanic.run(host="0.0.0.0", port=8000)

View File

@ -1,6 +1,6 @@
from sanic import Sanic
import asyncio import asyncio
from sanic.response import text from sanic import Sanic
from sanic import response
from sanic.config import Config from sanic.config import Config
from sanic.exceptions import RequestTimeout from sanic.exceptions import RequestTimeout
@ -11,11 +11,11 @@ app = Sanic(__name__)
@app.route('/') @app.route('/')
async def test(request): async def test(request):
await asyncio.sleep(3) await asyncio.sleep(3)
return text('Hello, world!') return response.text('Hello, world!')
@app.exception(RequestTimeout) @app.exception(RequestTimeout)
def timeout(request, exception): def timeout(request, exception):
return text('RequestTimeout from error_handler.', 408) return response.text('RequestTimeout from error_handler.', 408)
app.run(host='0.0.0.0', port=8000) app.run(host='0.0.0.0', port=8000)

View File

@ -1,12 +1,12 @@
from sanic import Sanic from sanic import Sanic
from sanic.response import json from sanic import response
app = Sanic(__name__) app = Sanic(__name__)
@app.route("/") @app.route("/")
async def test(request): async def test(request):
return json({"test": True}) return response.json({"test": True})
if __name__ == '__main__': if __name__ == '__main__':

View File

@ -2,7 +2,7 @@ import os
from sanic import Sanic from sanic import Sanic
from sanic.log import log from sanic.log import log
from sanic.response import json, text, file from sanic import response
from sanic.exceptions import ServerError from sanic.exceptions import ServerError
app = Sanic(__name__) app = Sanic(__name__)
@ -10,17 +10,17 @@ app = Sanic(__name__)
@app.route("/") @app.route("/")
async def test_async(request): async def test_async(request):
return json({"test": True}) return response.json({"test": True})
@app.route("/sync", methods=['GET', 'POST']) @app.route("/sync", methods=['GET', 'POST'])
def test_sync(request): def test_sync(request):
return json({"test": True}) return response.json({"test": True})
@app.route("/dynamic/<name>/<id:int>") @app.route("/dynamic/<name>/<id:int>")
def test_params(request, name, id): def test_params(request, name, id):
return text("yeehaww {} {}".format(name, id)) return response.text("yeehaww {} {}".format(name, id))
@app.route("/exception") @app.route("/exception")
@ -31,11 +31,11 @@ def exception(request):
async def test_await(request): async def test_await(request):
import asyncio import asyncio
await asyncio.sleep(5) await asyncio.sleep(5)
return text("I'm feeling sleepy") return response.text("I'm feeling sleepy")
@app.route("/file") @app.route("/file")
async def test_file(request): async def test_file(request):
return await file(os.path.abspath("setup.py")) return await response.file(os.path.abspath("setup.py"))
# ----------------------------------------------- # # ----------------------------------------------- #
@ -44,7 +44,7 @@ async def test_file(request):
@app.exception(ServerError) @app.exception(ServerError)
async def test(request, exception): async def test(request, exception):
return json({"exception": "{}".format(exception), "status": exception.status_code}, status=exception.status_code) return response.json({"exception": "{}".format(exception), "status": exception.status_code}, status=exception.status_code)
# ----------------------------------------------- # # ----------------------------------------------- #
@ -53,17 +53,17 @@ async def test(request, exception):
@app.route("/json") @app.route("/json")
def post_json(request): def post_json(request):
return json({"received": True, "message": request.json}) return response.json({"received": True, "message": request.json})
@app.route("/form") @app.route("/form")
def post_json(request): def post_json(request):
return json({"received": True, "form_data": request.form, "test": request.form.get('test')}) return response.json({"received": True, "form_data": request.form, "test": request.form.get('test')})
@app.route("/query_string") @app.route("/query_string")
def query_string(request): def query_string(request):
return json({"parsed": True, "args": request.args, "url": request.url, "query_string": request.query_string}) return response.json({"parsed": True, "args": request.args, "url": request.url, "query_string": request.query_string})
# ----------------------------------------------- # # ----------------------------------------------- #

View File

@ -1,4 +1,4 @@
from sanic.response import text from sanic import response
from sanic import Sanic from sanic import Sanic
from sanic.blueprints import Blueprint from sanic.blueprints import Blueprint
@ -15,25 +15,25 @@ bp = Blueprint("bp", host="bp.example.com")
"somethingelse.com", "somethingelse.com",
"therestofyourdomains.com"]) "therestofyourdomains.com"])
async def hello(request): async def hello(request):
return text("Some defaults") return response.text("Some defaults")
@app.route('/', host="example.com") @app.route('/', host="example.com")
async def hello(request): async def hello(request):
return text("Answer") return response.text("Answer")
@app.route('/', host="sub.example.com") @app.route('/', host="sub.example.com")
async def hello(request): async def hello(request):
return text("42") return response.text("42")
@bp.route("/question") @bp.route("/question")
async def hello(request): async def hello(request):
return text("What is the meaning of life?") return response.text("What is the meaning of life?")
@bp.route("/answer") @bp.route("/answer")
async def hello(request): async def hello(request):
return text("42") return response.text("42")
app.register_blueprint(bp) app.register_blueprint(bp)
if __name__ == '__main__': if __name__ == '__main__':
app.run(host="0.0.0.0", port=8000) app.run(host="0.0.0.0", port=8000)