MagicStack / MagicStack/asyncpg

Allow coroutines on add_listener.

Ouverte
#546 3 commentaires 1 réaction 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 current code that process a notification uses the method call_soon which expects a callable, why not to use create_task (or ensure_future for compatibility reasons) after checking if the callback is a coroutine?

There are different ways to do this, either just checking if the callback is a coroutine as described in here for example. Another way is just to add an extra argument or a different method to register coroutines.

Would it make sense to add a context? I am currently passing extra arguments to the callback via functools.partial.

Let me know if something like this would be accepted I can create a PR with the implementation.

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

Commencer par le point d’entrée add_listener et le traitement des notifications qui appelle actuellement call_soon. Comparer create_task et ensure_future pour les callbacks de coroutine, notamment l’utilisation existante de functools.partial pour les arguments supplémentaires. Done doit inclure une API de callbacks convenue et un comportement de compatibilité, avec des tests couvrant les listeners classiques et de coroutine.

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

Évaluation

Stack technique
postgresql, python
Domaine
api, database
Type d'issue
Fonctionnalité
Difficulté
4/5
Temps estimé
3-5 jours
Activité
À l'abandon
Clarté
À clarifier
Accessibilité débutants
32/100

Recevez les nouvelles issues par e-mail

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