Document `looping_call()` functionality that will wait for the given function to finish before scheduling another (#15772)

Thanks to @erikjohnston for clarifying, https://github.com/matrix-org/synapse/pull/15743#discussion_r1226544457

We don't have to worry about calls stacking up if the given function takes longer than the scheduled time.
This commit is contained in:
Eric Eastwood 2023-06-13 16:34:54 -05:00 committed by GitHub
parent 553f2f53e7
commit 8ddb2de553
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 6 additions and 0 deletions

1
changelog.d/15772.doc Normal file
View File

@ -0,0 +1 @@
Document `looping_call()` functionality that will wait for the given function to finish before scheduling another.

View File

@ -116,6 +116,11 @@ class Clock:
Waits `msec` initially before calling `f` for the first time. Waits `msec` initially before calling `f` for the first time.
If the function given to `looping_call` returns an awaitable/deferred, the next
call isn't scheduled until after the returned awaitable has finished. We get
this functionality thanks to this function being a thin wrapper around
`twisted.internet.task.LoopingCall`.
Note that the function will be called with no logcontext, so if it is anything Note that the function will be called with no logcontext, so if it is anything
other than trivial, you probably want to wrap it in run_as_background_process. other than trivial, you probably want to wrap it in run_as_background_process.