Skip to content

Commit

Permalink
prefer add_done_callback() over recursive coroutine
Browse files Browse the repository at this point in the history
  • Loading branch information
dlqqq committed Mar 20, 2024
1 parent 43df034 commit 9f55400
Showing 1 changed file with 9 additions and 4 deletions.
13 changes: 9 additions & 4 deletions jupyter_collaboration/rooms.py
Original file line number Diff line number Diff line change
Expand Up @@ -242,6 +242,15 @@ def _on_document_change(self, target: str, event: Any) -> None:
return

self._maybe_save_task = asyncio.create_task(self._maybe_save_document())
self._maybe_save_task.add_done_callback(self._maybe_save_done_callback)

def _maybe_save_done_callback(self, _future):
if not self._should_resave:
return

self._should_resave = False
self._maybe_save_task = asyncio.create_task(self._maybe_save_document())
self._maybe_save_task.add_done_callback(self._maybe_save_done_callback)

async def _maybe_save_document(self) -> None:
"""
Expand Down Expand Up @@ -278,10 +287,6 @@ async def _maybe_save_document(self) -> None:
self._document.dirty = False
self._emit(LogLevel.INFO, "save", "Content saved.")

if self._should_resave:
self._should_resave = False
self._maybe_save_task = asyncio.create_task(self._maybe_save_document())

except asyncio.CancelledError:
return

Expand Down

0 comments on commit 9f55400

Please sign in to comment.