Skip to content
Snippets Groups Projects
Unverified Commit 5581dd7b authored by Erik Johnston's avatar Erik Johnston Committed by GitHub
Browse files

Allow modules to run looping call on all instances (#10638)

By default the calls only ran on the worker configured to run background
tasks.
parent 703e3a9e
No related branches found
No related tags found
No related merge requests found
Add option to allow modules to run periodic tasks on all instances, rather than just the one configured to run background tasks.
......@@ -604,10 +604,15 @@ class ModuleApi:
msec: float,
*args,
desc: Optional[str] = None,
run_on_all_instances: bool = False,
**kwargs,
):
"""Wraps a function as a background process and calls it repeatedly.
NOTE: Will only run on the instance that is configured to run
background processes (which is the main process by default), unless
`run_on_all_workers` is set.
Waits `msec` initially before calling `f` for the first time.
Args:
......@@ -618,12 +623,14 @@ class ModuleApi:
msec: How long to wait between calls in milliseconds.
*args: Positional arguments to pass to function.
desc: The background task's description. Default to the function's name.
run_on_all_instances: Whether to run this on all instances, rather
than just the instance configured to run background tasks.
**kwargs: Key arguments to pass to function.
"""
if desc is None:
desc = f.__name__
if self._hs.config.run_background_tasks:
if self._hs.config.run_background_tasks or run_on_all_instances:
self._clock.looping_call(
run_as_background_process,
msec,
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment