Fetch displaynames asynchronously

This commit is contained in:
Hugo Osvaldo Barrera 2021-06-22 00:50:40 +02:00
parent 1a1f6f0788
commit 8d69b73c9e
3 changed files with 30 additions and 24 deletions

View file

@ -211,11 +211,9 @@ def discover(ctx, pairs, list):
conn = aiohttp.TCPConnector(limit_per_host=16)
for pair_name in pairs or config.pairs:
pair = config.get_pair(pair_name)
await discover_collections(
status_path=config.general["status_path"],
pair=pair,
pair=config.get_pair(pair_name),
from_cache=False,
list_collections=list,
connector=conn,

View file

@ -1,3 +1,5 @@
from __future__ import annotations
import json
import os
import string
@ -206,7 +208,7 @@ class Config:
else:
return expand_fetch_params(args)
def get_pair(self, pair_name):
def get_pair(self, pair_name: str) -> PairConfig:
try:
return self.pairs[pair_name]
except KeyError as e:

View file

@ -81,6 +81,7 @@ async def collections_for_pair(
b_discovered = _DiscoverResult(pair.config_b, connector=connector)
if list_collections:
# TODO: We should gather data and THEN print, so it can be async.
await _print_collections(
pair.config_a["instance_name"],
a_discovered.get_self,
@ -275,27 +276,32 @@ async def _print_collections(
)
return
logger.info(f"{instance_name}:")
tasks = []
for args in discovered.values():
collection = args["collection"]
if collection is None:
continue
tasks.append(_print_single_collection(args, instance_name, connector))
args["instance_name"] = instance_name
try:
storage = await storage_instance_from_config(
args,
create=False,
connector=connector,
)
displayname = await storage.get_meta("displayname")
except Exception:
displayname = ""
await asyncio.gather(*tasks)
logger.info(
" - {}{}".format(
json.dumps(collection),
f' ("{displayname}")'
if displayname and displayname != collection
else "",
)
async def _print_single_collection(args, instance_name, connector):
collection = args["collection"]
if collection is None:
return
args["instance_name"] = instance_name
try:
storage = await storage_instance_from_config(
args,
create=False,
connector=connector,
)
displayname = await storage.get_meta("displayname")
except Exception:
displayname = ""
logger.info(
" - {}{}".format(
json.dumps(collection),
f' ("{displayname}")' if displayname and displayname != collection else "",
)
)