nonebot2/website/docs/guide/tutorial/choose-driver.md
2021-12-27 15:29:34 +08:00

4.2 KiB
Raw Blame History

sidebar_position description options
5 各驱动器的功能与区别
menu
weight category
25 guide

选择驱动器

:::warning 注意 驱动器的选择通常与你所使用的协议适配器相关,如果你不知道该选择哪个驱动器,可以先阅读你想要使用的协议适配器文档说明。 :::

:::tip 提示 如何安装驱动器请参考 安装驱动器

如何使用驱动器请参考 配置 :::

驱动器的类型

驱动器的类型有两种:

  • ForwardDriver: 即客户端类型驱动器,多用于使用 HTTP 轮询WebSocket 连接服务器的情形。
  • ReverseDriver: 即服务端类型驱动器,多用于使用 WebHook 情形。

其中 ReverseDriver 可以配合 ForwardDriver 一起使用,即可以同时使用客户端功能和服务端功能。

驱动器的功能

在 NoneBot 中,驱动器主要负责数据的收发,不对数据进行处理。通常,驱动器会实现以下功能:

ForwardDriver

  1. 异步发送 HTTP 请求,自定义 HTTP Method, URL, Header, Body, Cookie, Proxy, Timeout 等。
  2. 异步建立 WebSocket 连接上下文,自定义 WebSocket URL, Header, Cookie, Proxy, Timeout 等。

ReverseDriver

  1. 协议适配器自定义 HTTP 上报地址以及对上报数据处理的回调函数。
  2. 协议适配器自定义 WebSocket 连接请求地址以及对 WebSocket 请求处理的回调函数。
  3. 用户可以将 Driver 作为服务端使用,自行添加任何服务端相关功能。

内置驱动器

FastAPI (默认)

类型: ReverseDriver

FastAPI is a modern, fast (high-performance), web framework for building APIs with Python 3.6+ based on standard Python type hints.

FastAPI 是一个易上手、高性能的异步 Web 框架,具有极佳的编写体验,可以挂载其他 ASGI, WSGI 应用。

FastAPI: 文档, 仓库

驱动器: API, 源码

DRIVER=~fastapi

Quart

类型: ReverseDriver

Quart is an asyncio reimplementation of the popular Flask microframework API.

Quart 是一个类 Flask 的异步版本,拥有与 Flask 非常相似的接口和使用方法。

Quart: 文档, 仓库

驱动器: API, 源码

DRIVER=~quart

HTTPX

类型: ForwardDriver

:::warning 注意 本驱动器仅支持 HTTP 请求,不支持 WebSocket 请求。 :::

HTTPX is a fully featured HTTP client for Python 3, which provides sync and async APIs, and support for both HTTP/1.1 and HTTP/2.

HTTPX: 文档, 仓库

驱动器: API, 源码

DRIVER=~httpx

:::important 注意 本驱动器支持 Mixin :::

websockets

类型: ForwardDriver

:::warning 注意 本驱动器仅支持 WebSocket 请求,不支持 HTTP 请求。 :::

websockets is a library for building WebSocket servers and clients in Python with a focus on correctness, simplicity, robustness, and performance.

websockets: 文档, 仓库

驱动器: API, 源码

DRIVER=~websockets

:::important 注意 本驱动器支持 Mixin :::

AIOHTTP

类型: ForwardDriver

Asynchronous HTTP Client/Server for asyncio and Python.

AIOHTTP: 文档, 仓库

驱动器: API, 源码

DRIVER=~httpx

:::important 注意 本驱动器支持 Mixin :::