From 72b798f7aea680252ec8203e20d9a16bc8cc837b Mon Sep 17 00:00:00 2001 From: synodriver Date: Wed, 3 May 2023 15:37:53 +0800 Subject: [PATCH] =?UTF-8?q?:bug:=20Fix:=20`run=5Fsync`=20=E4=B8=8A?= =?UTF-8?q?=E4=B8=8B=E6=96=87=20(#1968)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- nonebot/utils.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/nonebot/utils.py b/nonebot/utils.py index 07d8f8ec..93cffb70 100644 --- a/nonebot/utils.py +++ b/nonebot/utils.py @@ -12,6 +12,7 @@ import inspect import importlib import dataclasses from pathlib import Path +from contextvars import copy_context from functools import wraps, partial from contextlib import asynccontextmanager from typing_extensions import ParamSpec, get_args, get_origin @@ -111,7 +112,9 @@ def run_sync(call: Callable[P, R]) -> Callable[P, Coroutine[None, None, R]]: async def _wrapper(*args: P.args, **kwargs: P.kwargs) -> R: loop = asyncio.get_running_loop() pfunc = partial(call, *args, **kwargs) - result = await loop.run_in_executor(None, pfunc) + context = copy_context() + context_run = context.run + result = await loop.run_in_executor(None, context_run, pfunc) return result return _wrapper