import os from sanic import Sanic, response from sanic.exceptions import ServerError from sanic.log import logger as log app = Sanic("Example") @app.route("/") async def test_async(request): return response.json({"test": True}) @app.route("/sync", methods=["GET", "POST"]) def test_sync(request): return response.json({"test": True}) @app.route("/dynamic//") def test_params(request, name, i): return response.text(f"yeehaww {name} {i}") @app.route("/exception") def exception(request): raise ServerError("It's dead jim") @app.route("/await") async def test_await(request): import asyncio await asyncio.sleep(5) return response.text("I'm feeling sleepy") @app.route("/file") async def test_file(request): return await response.file(os.path.abspath("setup.py")) @app.route("/file_stream") async def test_file_stream(request): return await response.file_stream(os.path.abspath("setup.py"), chunk_size=1024) # ----------------------------------------------- # # Exceptions # ----------------------------------------------- # @app.exception(ServerError) async def test(request, exception): return response.json( {"exception": str(exception), "status": exception.status_code}, status=exception.status_code, ) # ----------------------------------------------- # # Read from request # ----------------------------------------------- # @app.route("/json") def post_json(request): return response.json({"received": True, "message": request.json}) @app.route("/form") def post_form_json(request): return response.json( { "received": True, "form_data": request.form, "test": request.form.get("test"), } ) @app.route("/query_string") def query_string(request): return response.json( { "parsed": True, "args": request.args, "url": request.url, "query_string": request.query_string, } ) # ----------------------------------------------- # # Run Server # ----------------------------------------------- # @app.before_server_start def before_start(app, loop): log.info("SERVER STARTING") @app.after_server_start def after_start(app, loop): log.info("OH OH OH OH OHHHHHHHH") @app.before_server_stop def before_stop(app, loop): log.info("SERVER STOPPING") @app.after_server_stop def after_stop(app, loop): log.info("TRIED EVERYTHING") if __name__ == "__main__": app.run(host="0.0.0.0", port=8000, debug=True)