Skip to content

Commit 7095c22

Browse files
🐛 fix bug
1 parent d661d14 commit 7095c22

File tree

1 file changed

+18
-21
lines changed

1 file changed

+18
-21
lines changed

nonebot_plugin_wait_a_minute/__init__.py

Lines changed: 18 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
import signal
44
from asyncio import Task, gather, get_event_loop
55
from enum import Enum, auto
6-
from threading import Lock
76
from types import FrameType
87
from typing import Any, Callable, ClassVar, Optional, TypeVar
98

@@ -40,8 +39,7 @@ class Hook:
4039
status: Status = Status.NOT_RUNNING_YET
4140
funcs: ClassVar[list[Callable[[], Any]]] = []
4241
tasks: ClassVar[list[Task]] = []
43-
callback: Task
44-
lock: Lock = Lock()
42+
callback: Task | None = None
4543

4644
@classmethod
4745
def register(cls, func: Callable[[], T]) -> Callable[[], T]:
@@ -51,24 +49,23 @@ def register(cls, func: Callable[[], T]) -> Callable[[], T]:
5149
@classmethod
5250
def sig_handle(cls, original_handle: signal._HANDLER) -> SigHandleFunc:
5351
def inner(signum: int, frame: FrameType | None) -> None: # noqa: ARG001
54-
with cls.lock:
55-
if not cls.funcs:
56-
cls.status = Status.FINISHED
57-
58-
if cls.status == Status.NOT_RUNNING_YET:
59-
loop = get_event_loop()
60-
for i in cls.funcs:
61-
if is_coroutine_callable(i):
62-
cls.tasks.append(loop.create_task(i()))
63-
else:
64-
cls.tasks.append(loop.create_task(run_sync(i())()))
65-
cls.status = Status.RUNNING
66-
cls.callback = loop.create_task(cls.check_task(signum))
67-
elif cls.status == Status.RUNNING:
68-
logger.warning(f'signal {signum} received, but wait a minute pls')
69-
elif cls.status == Status.FINISHED:
70-
signal.signal(signum, original_handle)
71-
signal.raise_signal(signum)
52+
if not cls.funcs:
53+
cls.status = Status.FINISHED
54+
55+
if cls.status == Status.NOT_RUNNING_YET:
56+
cls.status = Status.RUNNING
57+
loop = get_event_loop()
58+
for i in cls.funcs:
59+
if is_coroutine_callable(i):
60+
cls.tasks.append(loop.create_task(i()))
61+
else:
62+
cls.tasks.append(loop.create_task(run_sync(i)()))
63+
cls.callback = loop.create_task(cls.check_task(signum))
64+
elif cls.status == Status.RUNNING:
65+
logger.warning(f'signal {signum} received, but wait a minute pls')
66+
elif cls.status == Status.FINISHED:
67+
signal.signal(signum, original_handle)
68+
signal.raise_signal(signum)
7269

7370
return inner
7471

0 commit comments

Comments
 (0)