MagicStack / MagicStack/asyncpg

Share connections from a pool with different databases in the same PG server

Offen
#368 6 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

Vorherrschende Sprache
Python
Sterne
8.1k
Forks
468
PR-Merge-Kennzahlen
Keine gemergten PRs in 30 T.

Beschreibung

When we are using TLS connections to a PG server the cost to keep opened multiple connections to different databases is high. So I'd like to implement database switching to share the connections from a pool with different databases.

pool = await asyncpg.create_pool(database='postgres')

async def handle(queries):
    """Handle incoming queries."""

    results = defaultdict(list)

    for dbname, dbqueries in queries.items():
        async with pool.acquire() as connection:

            connection.set_database(dbname)  # I want this !!!

            async with connection.transaction():
                for query in dbqueries:
                    result = await connection.execute(query)
                    results[dbname].append(result)

Is it feasible with asyncpg?

Beitragsleitfaden

Für dieses Repository ist kein Beitragsleitfaden indexiert

Erste Schritte

  1. Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
  3. Forke das Repository und arbeite in einem Branch.
  4. Öffne einen Pull Request, der die Issue-Nummer nennt.

Rechercherichtung

Überprüfe die Pool- und Verbindungseinstiegspunkte von asyncpg und sieh dir anschließend die Verbindungs- und Datenbanksemantik von PostgreSQL an. Das Issue nennt keine Dateien oder Tests; für den Abschluss wären ein von einem Maintainer bestätigter Umfang und ein reproduzierbarer Abnahmefall für die gemeinsame Nutzung gepoolter Verbindungen über mehrere Datenbanken hinweg erforderlich.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
postgresql, python
Bereich
databases
Issue-Typ
Feature
Schwierigkeit
5/5
Geschätzter Aufwand
Über eine Woche
Aktivitätsstatus
Veraltet
Klarheit
Größtenteils klar
Anfängerfreundlichkeit
20/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.