From 006b9dd8168774cd7bcc4eb2f1c2bfe165d55c02 Mon Sep 17 00:00:00 2001 From: Akirami <66513481+A-kirami@users.noreply.github.com> Date: Wed, 4 Jan 2023 12:58:26 +0800 Subject: [PATCH] =?UTF-8?q?:sparkles:=20Feature:=20=E6=94=AF=E6=8C=81?= =?UTF-8?q?=E7=BB=99=20`FastAPI`=20=E5=92=8C=20`Quart`=20=E4=BC=A0?= =?UTF-8?q?=E9=80=92=E9=A2=9D=E5=A4=96=E7=9A=84=E5=8F=82=E6=95=B0=20(#1543?= =?UTF-8?q?)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- nonebot/drivers/fastapi.py | 5 ++++- nonebot/drivers/quart.py | 8 ++++++-- website/docs/tutorial/choose-driver.md | 12 ++++++++++++ 3 files changed, 22 insertions(+), 3 deletions(-) diff --git a/nonebot/drivers/fastapi.py b/nonebot/drivers/fastapi.py index a9d6ef3b..7e9a968c 100644 --- a/nonebot/drivers/fastapi.py +++ b/nonebot/drivers/fastapi.py @@ -13,7 +13,7 @@ FrontMatter: import logging import contextlib from functools import wraps -from typing import Any, List, Tuple, Union, Callable, Optional +from typing import Any, Dict, List, Tuple, Union, Callable, Optional import uvicorn from pydantic import BaseSettings @@ -65,6 +65,8 @@ class Config(BaseSettings): """要监听的文件列表,支持 glob pattern,默认为 uvicorn 默认值""" fastapi_reload_excludes: Optional[List[str]] = None """不要监听的文件列表,支持 glob pattern,默认为 uvicorn 默认值""" + fastapi_extra: Dict[str, Any] = {} + """传递给 `FastAPI` 的其他参数。""" class Config: extra = "ignore" @@ -82,6 +84,7 @@ class Driver(ReverseDriver): openapi_url=self.fastapi_config.fastapi_openapi_url, docs_url=self.fastapi_config.fastapi_docs_url, redoc_url=self.fastapi_config.fastapi_redoc_url, + **self.fastapi_config.fastapi_extra, ) @property diff --git a/nonebot/drivers/quart.py b/nonebot/drivers/quart.py index bb02522b..0ad0b1b8 100644 --- a/nonebot/drivers/quart.py +++ b/nonebot/drivers/quart.py @@ -17,7 +17,7 @@ FrontMatter: import asyncio from functools import wraps -from typing import List, Tuple, Union, TypeVar, Callable, Optional, Coroutine +from typing import Any, Dict, List, Tuple, Union, TypeVar, Callable, Optional, Coroutine import uvicorn from pydantic import BaseSettings @@ -69,6 +69,8 @@ class Config(BaseSettings): """要监听的文件列表,支持 glob pattern,默认为 uvicorn 默认值""" quart_reload_excludes: Optional[List[str]] = None """不要监听的文件列表,支持 glob pattern,默认为 uvicorn 默认值""" + quart_extra: Dict[str, Any] = {} + """传递给 `Quart` 的其他参数。""" class Config: extra = "ignore" @@ -82,7 +84,9 @@ class Driver(ReverseDriver): self.quart_config = Config(**config.dict()) - self._server_app = Quart(self.__class__.__qualname__) + self._server_app = Quart( + self.__class__.__qualname__, **self.quart_config.quart_extra + ) @property @overrides(ReverseDriver) diff --git a/website/docs/tutorial/choose-driver.md b/website/docs/tutorial/choose-driver.md index 955ccfb2..914cb698 100644 --- a/website/docs/tutorial/choose-driver.md +++ b/website/docs/tutorial/choose-driver.md @@ -146,6 +146,12 @@ nonebot.run(app="bot:app") 默认值:`None` 说明:不要监听的文件列表,支持 glob pattern,默认为 uvicorn 默认值 +##### `fastapi_extra` + +类型:`Dist[str, Any]` +默认值:`{}` +说明:传递给 `FastAPI` 的其他参数 + ### Quart 类型:`ReverseDriver` @@ -199,6 +205,12 @@ nonebot.run(app="bot:app") 默认值:`None` 说明:不要监听的文件列表,支持 glob pattern,默认为 uvicorn 默认值 +##### `quart_extra` + +类型:`Dist[str, Any]` +默认值:`{}` +说明:传递给 `Quart` 的其他参数 + ### HTTPX 类型:`ForwardDriver`