mirror of
https://github.com/A-Minos/nonebot-plugin-tetris-stats.git
synced 2026-03-05 05:36:54 +08:00
✨ 给截图加个耗时统计
This commit is contained in:
@@ -4,11 +4,13 @@ from playwright.async_api import TimeoutError, ViewportSize
|
||||
from ..config.config import Config
|
||||
from .browser import BrowserManager
|
||||
from .retry import retry
|
||||
from .time_it import time_it
|
||||
|
||||
config = get_plugin_config(Config)
|
||||
|
||||
|
||||
@retry(exception_type=TimeoutError, reply='截图失败, 重试中')
|
||||
@time_it
|
||||
async def screenshot(url: str) -> bytes:
|
||||
browser = await BrowserManager.get_browser()
|
||||
async with (
|
||||
|
||||
21
nonebot_plugin_tetris_stats/utils/time_it.py
Normal file
21
nonebot_plugin_tetris_stats/utils/time_it.py
Normal file
@@ -0,0 +1,21 @@
|
||||
from collections.abc import Callable, Coroutine
|
||||
from functools import wraps
|
||||
from time import time_ns
|
||||
from typing import Any, ParamSpec, TypeVar
|
||||
|
||||
from nonebot.log import logger
|
||||
|
||||
T = TypeVar('T')
|
||||
P = ParamSpec('P')
|
||||
|
||||
|
||||
def time_it(func: Callable[P, Coroutine[Any, Any, T]]) -> Callable[P, Coroutine[Any, Any, T]]:
|
||||
@wraps(func)
|
||||
async def wrapper(*args: P.args, **kwargs: P.kwargs) -> T:
|
||||
start = time_ns()
|
||||
try:
|
||||
return await func(*args, **kwargs)
|
||||
finally:
|
||||
logger.debug(f'{func.__name__} took {(time_ns() - start) / 1e6}ms')
|
||||
|
||||
return wrapper
|
||||
Reference in New Issue
Block a user