我试图了解将 aiohttp 与 Sanic 一起使用的正确方法是什么。
从 aiohttp文档中,我发现以下内容:
不要为每个请求创建会话。您很可能需要每个应用程序一个会话来完全执行所有请求。更复杂的情况可能需要每个站点一个会话,例如一个用于 Github,另一个用于 Facebook API。无论如何,为每个请求创建一个会话是一个非常糟糕的主意。会话内部包含一个连接池。连接重用和保持活动(默认情况下都打开)可以提高整体性能。
当我去 Sanic 文档时,我发现了一个这样的例子:
这是一个例子:
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)
这不是管理 aiohttp 会话的正确方法...
那么正确的方法是什么?
我应该在应用程序中启动会话并将会话注入所有层中的所有方法吗?
我发现的唯一问题是这个,但这无济于事,因为我需要创建自己的类来使用会话,而不是理智的。
还发现了这个在 Sanic 文档中
我有点困惑:(正确的方法是什么?