mirror of
https://git.anonymousland.org/anonymousland/synapse.git
synced 2025-05-02 21:54:53 -04:00
Add concurrently_execute function
This commit is contained in:
parent
35bb465b86
commit
8d73cd502b
4 changed files with 81 additions and 74 deletions
|
@ -23,7 +23,8 @@ from synapse.api.constants import (
|
|||
EventTypes, JoinRules, RoomCreationPreset,
|
||||
)
|
||||
from synapse.api.errors import AuthError, StoreError, SynapseError
|
||||
from synapse.util import stringutils, unwrapFirstError
|
||||
from synapse.util import stringutils
|
||||
from synapse.util.async import concurrently_execute
|
||||
from synapse.util.logcontext import preserve_context_over_fn
|
||||
from synapse.util.caches.response_cache import ResponseCache
|
||||
|
||||
|
@ -368,6 +369,8 @@ class RoomListHandler(BaseHandler):
|
|||
def _get_public_room_list(self):
|
||||
room_ids = yield self.store.get_public_room_ids()
|
||||
|
||||
results = []
|
||||
|
||||
@defer.inlineCallbacks
|
||||
def handle_room(room_id):
|
||||
aliases = yield self.store.get_aliases_for_room(room_id)
|
||||
|
@ -428,18 +431,12 @@ class RoomListHandler(BaseHandler):
|
|||
joined_users = yield self.store.get_users_in_room(room_id)
|
||||
result["num_joined_members"] = len(joined_users)
|
||||
|
||||
defer.returnValue(result)
|
||||
results.append(result)
|
||||
|
||||
result = []
|
||||
for chunk in (room_ids[i:i + 10] for i in xrange(0, len(room_ids), 10)):
|
||||
chunk_result = yield defer.gatherResults([
|
||||
handle_room(room_id)
|
||||
for room_id in chunk
|
||||
], consumeErrors=True).addErrback(unwrapFirstError)
|
||||
result.extend(v for v in chunk_result if v)
|
||||
yield concurrently_execute(handle_room, room_ids, 10)
|
||||
|
||||
# FIXME (erikj): START is no longer a valid value
|
||||
defer.returnValue({"start": "START", "end": "END", "chunk": result})
|
||||
defer.returnValue({"start": "START", "end": "END", "chunk": results})
|
||||
|
||||
|
||||
class RoomContextHandler(BaseHandler):
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue