Skip to content

Commit 26f46e3

Browse files
committed
Implement uncancel pattern
1 parent b1269ae commit 26f46e3

File tree

1 file changed

+9
-4
lines changed

1 file changed

+9
-4
lines changed

pymongo/_asyncio_task.py

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -27,15 +27,20 @@
2727
class _Task(asyncio.Task):
2828
def __init__(self, coro: Coroutine[Any, Any, Any], *, name: Optional[str] = None) -> None:
2929
super().__init__(coro, name=name)
30-
self._cancelled: bool = False
30+
self._cancel_requests = 0
3131
asyncio._register_task(self)
3232

3333
def cancel(self, msg: Optional[str] = None) -> bool:
34-
self._cancelled = True
34+
self._cancel_requests += 1
3535
return super().cancel(msg=msg)
3636

37-
def cancelling(self) -> bool:
38-
return self._cancelled
37+
def uncancel(self) -> int:
38+
if self._cancel_requests > 0:
39+
self._cancel_requests -= 1
40+
return self._cancel_requests
41+
42+
def cancelling(self) -> int:
43+
return self._cancel_requests
3944

4045

4146
def create_task(coro: Coroutine[Any, Any, Any], *, name: Optional[str] = None) -> asyncio.Task:

0 commit comments

Comments
 (0)