diff options
author | Erik Johnston <erik@matrix.org> | 2019-10-29 15:02:23 +0000 |
---|---|---|
committer | Erik Johnston <erik@matrix.org> | 2019-10-29 15:02:23 +0000 |
commit | 09a135b0391a7a65c24c8c7b046cb6573dee3947 (patch) | |
tree | 9dc82b8d05f89b636e768bc0dea7d2c7ad526136 /synapse/util/async_helpers.py | |
parent | Newsfile (diff) | |
download | synapse-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.py | 7 |
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 |