项目框架搭建及数据库配置
新版tornado框架已经完全接纳了python中的asyncio库和async/await异步语法
所以在我的项目里采用aiomysql和aioredis两个异步库来连接数据库和redis
但是我没办法在网上找到详细的在tornado中使用这两个库的方法,只能按照官网的说明来用了
1. 重写tornado.web.Application类
目的在于将我们的数据库连接池导入到application类中
class Application(web.Application):
def __init__(self, db_pool, redis_pool, *args, **kwargs):
super().__init__(*args, **kwargs)
self._db_pool = db_pool
self._redis = redis_pool
@property
def db_pool(self):
return self._db_pool
@property
def redis(self):
return self._redis
2.编写aiomysql和aioredis初始化函数
为了避免连接占用,这里采用连接池来连接数据库
数据库连接池初始化函数
async def init_db_pool(loop): # 数据库连接池初始化
return await aiomysql.create_pool(maxsize=300, **mysql_options, loop=loop)
async def init_redis_pool(loop):
return await aioredis.Redis(aioredis.ConnectionsPool(**redis_options