MagicStack / MagicStack/asyncpg

Note which kwargs are safe to pass to Pool.set_connect_args

Ouverte
#439 1 commentaire 0 réactions 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

Langage dominant
Python
Étoiles
8.1k
Forks
468
Métriques de merge des PR
Aucune PR mergée en 30 j

Description

The documentation for asyncpg.pool.Pool.set_connect_args makes no mention that there are 2 particular kwargs that are already being passed to connect by the pool when it creates new connections: https://github.com/MagicStack/asyncpg/blob/92c2d81256a1efd8cab12c0118d74ccd1c18131b/asyncpg/pool.py#L459-L463

Before reading the source, I incorrectly assumed that any of connect's kwargs are safe to pass to Pool.set_connect_args, but if you pass either loop or connection_class you'll end up with a traceback like this:

Traceback (most recent call last):
... omitted for brevity ...
File "/usr/local/lib/python3.7/site-packages/asyncpg/pool.py", line 762, in __aenter__
self.connection = await self.pool._acquire(self.timeout)
File "/usr/local/lib/python3.7/site-packages/asyncpg/pool.py", line 604, in _acquire
return await _acquire_impl()
File "/usr/local/lib/python3.7/site-packages/asyncpg/pool.py", line 589, in _acquire_impl
proxy = await ch.acquire() # type: PoolConnectionProxy
File "/usr/local/lib/python3.7/site-packages/asyncpg/pool.py", line 133, in acquire
await self.connect()
File "/usr/local/lib/python3.7/site-packages/asyncpg/pool.py", line 125, in connect
self._con = await self._pool._get_new_connection()
File "/usr/local/lib/python3.7/site-packages/asyncpg/pool.py", line 463, in _get_new_connection
**self._connect_kwargs)
TypeError: connect() got multiple values for keyword argument 'loop'

Not hard to fix in my app, but it'd be great to update the docs to maybe save future users some time.

Guide de contribution

Aucun guide de contribution indexé pour ce dépôt

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Piste de recherche

Commencez par la documentation de l’API asyncpg.pool.Pool.set_connect_args liée et par les lignes 459-463 référencées de asyncpg/pool.py. Mettez à jour la documentation afin d’identifier loop et connection_class comme des kwargs déjà fournis par le pool et qui ne peuvent pas être transmis sans risque. Vérifiez la documentation de l’API obtenue et assurez-vous que l’avertissement correspond au TypeError observé.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Évaluation

Stack technique
postgresql, python
Domaine
databases, documentation
Type d'issue
Documentation
Difficulté
2/5
Temps estimé
1-3 heures
Activité
À l'abandon
Clarté
Plutôt claire
Accessibilité débutants
45/100

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.