¿Cómo usar una aiohttp ClientSession con Sanic?

stoy tratando de entender cuál es la forma correcta de usar aiohttp con Sanic.

De aiohttpdocumentació, Encuentro lo siguiente:

No cree una sesión por solicitud. Lo más probable es que necesite una sesión por aplicación que realice todas las solicitudes por completo. Los casos más complejos pueden requerir una sesión por sitio, p. uno para Github y otro para las API de Facebook. De todos modos, hacer una sesión para cada solicitud es una muy mala idea. Una sesión contiene un grupo de conexiones dentro. La reutilización y el mantenimiento de la conexión (ambos están activados de forma predeterminada) pueden acelerar el rendimiento total.

Y cuando voy a la documentación de Sanic encuentro un ejemplo como este:

Esto es un ejemplo

from sanic import Sanic
from sanic.response import json

import asyncio
import aiohttp

app = Sanic(__name__)

sem = None

@app.route("/")
async def test(request):
    """
    Download and serve example JSON
    """
    url = "https://api.github.com/repos/channelcat/sanic"

    async with aiohttp.ClientSession() as session:
         async with sem, session.get(url) as response:
         return await response.json()

app.run(host="0.0.0.0", port=8000, workers=2)

¿Cuál no es la forma correcta de administrar una sesión aiohttp ...

Entonces, ¿cuál es la forma correcta?
Debo iniciar una sesión en la aplicación e inyectar la sesión a todos los métodos en todas las capas?

El único problema que encontré esest pero esto no ayuda porque necesito hacer mis propias clases para usar la sesión, y no sanic.
También se encontraronest en la documentación de Sanic, que dice que no debe crear una sesión fuera de un bucle de eventos.

Estoy un poco confundido :( ¿Cuál es el camino correcto a seguir?

Respuestas a la pregunta(2)

Su respuesta a la pregunta