from sanic import Sanic from sanic.response import json import uvloop import aiohttp #Create an event loop manually so that we can use it for both sanic & aiohttp loop = uvloop.new_event_loop() app = Sanic(__name__) async def fetch(session, url): """ Use session object to perform 'get' request on url """ async with session.get(url) as response: return await response.json() @app.route("/") async def test(request): """ Download and serve example JSON """ url = "https://api.github.com/repos/channelcat/sanic" async with aiohttp.ClientSession(loop=loop) as session: response = await fetch(session, url) return json(response) app.run(host="0.0.0.0", port=8000, loop=loop)