gpt4 book ai didi

python-3.5 - aiohttp+aiomysql 的单例连接池(python 3.5)

转载 作者:行者123 更新时间:2023-12-04 03:25:45 26 4
gpt4 key购买 nike

我在玩aiohttp+aiomysql。我想在请求调用之间共享相同的连接池实例。

所以我创建了一个全局变量并在协程调用中预初始化它一次。

我的代码:

import asyncio
from aiohttp import web
from aiohttp_session import get_session, session_middleware
from aiohttp_session.cookie_storage import EncryptedCookieStorage
from aiohttp_session import SimpleCookieStorage
#from mysql_pool import POOL
from aiomysql import create_pool

M_POOL = None

async def get_pool(loop):
global M_POOL
if M_POOL: return M_POOL
M_POOL = await create_pool(host='127.0.0.1', port=3306, user='user', password='user', db='test', loop=loop)
return M_POOL


async def query(request):
loop = asyncio.get_event_loop()
pool = await get_pool(loop)

print(id(pool))
async with pool.acquire() as conn:
async with conn.cursor() as cur:
await cur.execute("SELECT 42;")
value = await cur.fetchone()
print(value)

return web.Response(body=str.encode(str(value)))


app = web.Application(middlewares=[session_middleware(SimpleCookieStorage())])
app.router.add_route('GET', '/query', query)


web.run_app(app)

这样做是否方便,或者可能更好?

最佳答案

我强烈反对使用全局变量。

请看aiohttp demo用于规范方法。

SiteHandler是一个实现网站 View 的类。

关于python-3.5 - aiohttp+aiomysql 的单例连接池(python 3.5),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37877613/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com