aiohttp mysql_aiohttp简介及快速使用

前言

本文翻译自aiohttp官方文档,如有纰漏,欢迎指出。

aiohttp是一个为python提供异步http 客户端/服务端编程,基于asyncio(python用于支持异步编程的标准库)的异步库。

核心功能:

同时支持客户端使用和服务端使用。

同时支持服务端websockets组件和客户端websockets组件,开箱即用呦。

web服务器具有中间件,信号组件和可插拔路由的功能。

aiohttp库安装:

pip install aiohttp

你可能还想安装更快的cchardet库来代替chardet进行解码:

pip install cchardet

对于更快的客户端api dns解析方案,aiodns是个很好的选择,极力推荐:

pip install aiodns

快速开始:

客户端例子:

import aiohttp

import asyncio

import async_timeout

async def fetch(session, url):

with async_timeout.timeout(10):

async with session.get(url) as response:

return await response.text()

async def main():

async with aiohttp.clientsession() as session:

html = await fetch(session, 'http://python.org')

print(html)

loop = asyncio.get_event_loop()

loop.run_until_complete(main())

服务端例子:

from aiohttp import web

async def handle(request):

name = request.match_info.get('name', "anonymous")

text = "hello, " + name

return web.response(text=text)

app = web.application()

app.router.add_get('/', handle)

app.router.add_get('/{name}', handle)

web.run_app(app)

注意:

这篇文档的所有例子都是利用 async/await 语法来完成的,此语法介绍请看pep 492,此语法仅python 3.5+有效。 如果你使用的是python 3.4, 请将await替换成yield from,将async 替换成带有 @corotine装饰器的def. 比如

async def coro(...):

ret = await f()

应替换为:

@asyncio.coroutine

def coro(...):

ret = yield from f()

如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
FastAPI 是一个高性能、易于学习、快速构建 Web API 的 Python 框架。FastAPI 是基于 Starlette 框架构建的,并且支持 Python 3.6+。FastAPI 的特点在于具有出色的性能和开发效率,同时提供了快速、易于使用的 API 构建工具。 使用 FastAPI 连接 MySQL 和 Redis 数据库非常简单。你可以使用异步库如 aiohttp 来连接 MySQL 和 Redis。具体来说,你可以使用 aiomysql 和 aioredis 库来连接 MySQL 和 Redis。下面是一个示例代码: ``` from fastapi import FastAPI import aiomysql import aioredis app = FastAPI() # Connect to MySQL async def get_mysql_conn(): conn = await aiomysql.connect( host="localhost", port=3306, user="root", password="password", db="test", autocommit=True, ) return conn # Connect to Redis async def get_redis_conn(): redis = await aioredis.create_redis_pool("redis://localhost") return redis @app.get("/") async def root(): # Get MySQL connection mysql_conn = await get_mysql_conn() # Get Redis connection redis_conn = await get_redis_conn() # Perform database operations here # Close database connections mysql_conn.close() redis_conn.close() return {"message": "Hello World"} ``` 在 FastAPI 中,你可以使用 Pydantic 模块定义请求和响应模型。同时,FastAPI 也支持使用依赖注入来管理数据库连接等资源。这样可以更加方便地编写可维护的代码。 FastAPI 的框架结构可以按照以下方式设计: 1. main.py:程序入口,包含 FastAPI 应用程序的初始化和配置。 2. routers 目录:包含所有路由定义和处理函数。 3. models 目录:包含所有请求和响应模型定义。 4. dependencies 目录:包含所有依赖项定义和依赖项注入逻辑。 5. services 目录:包含所有业务逻辑处理函数,如数据库操作、业务计算等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值