Skip to content

Commit 9f55400

Browse files
committed
prefer add_done_callback() over recursive coroutine
1 parent 43df034 commit 9f55400

File tree

1 file changed

+9
-4
lines changed

1 file changed

+9
-4
lines changed

jupyter_collaboration/rooms.py

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -242,6 +242,15 @@ def _on_document_change(self, target: str, event: Any) -> None:
242242
return
243243

244244
self._maybe_save_task = asyncio.create_task(self._maybe_save_document())
245+
self._maybe_save_task.add_done_callback(self._maybe_save_done_callback)
246+
247+
def _maybe_save_done_callback(self, _future):
248+
if not self._should_resave:
249+
return
250+
251+
self._should_resave = False
252+
self._maybe_save_task = asyncio.create_task(self._maybe_save_document())
253+
self._maybe_save_task.add_done_callback(self._maybe_save_done_callback)
245254

246255
async def _maybe_save_document(self) -> None:
247256
"""
@@ -278,10 +287,6 @@ async def _maybe_save_document(self) -> None:
278287
self._document.dirty = False
279288
self._emit(LogLevel.INFO, "save", "Content saved.")
280289

281-
if self._should_resave:
282-
self._should_resave = False
283-
self._maybe_save_task = asyncio.create_task(self._maybe_save_document())
284-
285290
except asyncio.CancelledError:
286291
return
287292

0 commit comments

Comments
 (0)