perf(*): bound list queries, batch fetches, harden media downloads
This commit is contained in:
1 parent
9c12628304
commit
1fa4f18a9b
35 files changed
+473
-138
No files matched your search
@@ -49,18 +49,6 @@ async def _cancel(task: asyncio.Task) -> None:
|
||||
await task
|
||||
|
||||
|
||||
async def _enqueue_once(pool: asyncpg.Pool, account_id: int, kind: str) -> None:
|
||||
existing = await pool.fetchval(
|
||||
"SELECT 1 FROM jobs WHERE account_id = $1 AND kind = $2 "
|
||||
"AND status IN ('pending', 'running') LIMIT 1",
|
||||
account_id,
|
||||
kind,
|
||||
)
|
||||
if existing is None:
|
||||
await enqueue(pool, account_id, kind, {})
|
||||
logger.info(f"[green]Queued {kind}.[/]")
|
||||
|
||||
|
||||
class AccountRegistry:
|
||||
def __init__(self, pool: asyncpg.Pool, storage: ContentAddressedStorage) -> None:
|
||||
self._pool = pool
|
||||
@@ -121,8 +109,8 @@ class AccountRegistry:
|
||||
client, asyncio.create_task(consumer.run()), device_model
|
||||
)
|
||||
logger.info(f"[green]Client started:[/] {me.full_name} ({me.id})")
|
||||
await _enqueue_once(self._pool, account_id, "sync_dialogs")
|
||||
await _enqueue_once(self._pool, account_id, "sync_contacts")
|
||||
await enqueue(self._pool, account_id, "sync_dialogs", {})
|
||||
await enqueue(self._pool, account_id, "sync_contacts", {})
|
||||
|
||||
async def _stop(self, session_name: str) -> None:
|
||||
account = self._running.pop(session_name, None)
|
||||
|
||||
Reference in new issue
Block a user