mirror of
https://github.com/samsonjs/vdirsyncer.git
synced 2026-03-25 08:55:50 +00:00
Fetch displaynames asynchronously
This commit is contained in:
parent
1a1f6f0788
commit
8d69b73c9e
3 changed files with 30 additions and 24 deletions
|
|
@ -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,
|
||||
|
|
|
|||
|
|
@ -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:
|
||||
|
|
|
|||
|
|
@ -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 "",
|
||||
)
|
||||
)
|
||||
|
|
|
|||
Loading…
Reference in a new issue