summary refs log tree commit diff
path: root/synapse/util/async_helpers.py
diff options
context:
space:
mode:
authorErik Johnston <erik@matrix.org>2019-10-29 15:02:23 +0000
committerErik Johnston <erik@matrix.org>2019-10-29 15:02:23 +0000
commit09a135b0391a7a65c24c8c7b046cb6573dee3947 (patch)
tree9dc82b8d05f89b636e768bc0dea7d2c7ad526136 /synapse/util/async_helpers.py
parentNewsfile (diff)
downloadsynapse-09a135b0391a7a65c24c8c7b046cb6573dee3947.tar.xz
Make concurrently_execute work with async/await
Diffstat (limited to 'synapse/util/async_helpers.py')
-rw-r--r--synapse/util/async_helpers.py7
1 files changed, 3 insertions, 4 deletions
diff --git a/synapse/util/async_helpers.py b/synapse/util/async_helpers.py

index 804dbca443..7659eaeb42 100644 --- a/synapse/util/async_helpers.py +++ b/synapse/util/async_helpers.py
@@ -138,7 +138,7 @@ def concurrently_execute(func, args, limit): the number of concurrent executions. Args: - func (func): Function to execute, should return a deferred. + func (func): Function to execute, should return a deferred or coroutine. args (list): List of arguments to pass to func, each invocation of func gets a signle argument. limit (int): Maximum number of conccurent executions. @@ -148,11 +148,10 @@ def concurrently_execute(func, args, limit): """ it = iter(args) - @defer.inlineCallbacks - def _concurrently_execute_inner(): + async def _concurrently_execute_inner(): try: while True: - yield func(next(it)) + await maybe_awaitable(func(next(it))) except StopIteration: pass