MagicStack / MagicStack/asyncpg

Allow coroutines on add_listener.

Abierto
#546 3 comentarios 1 reacción 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Lenguaje dominante
Python
Estrellas
8.1k
Forks
468
Métricas de merge de PR
Sin PR fusionados en 30 d

Descripción

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.

Guía de contribución

No hay ninguna guía de contribución indexada para este repositorio

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Línea de trabajo

Comienza en el punto de entrada add_listener y en el procesamiento de notificaciones que actualmente llama a call_soon. Compara create_task y ensure_future para callbacks de coroutine, incluido el uso existente de functools.partial para argumentos adicionales. Done debe incluir una API de callbacks acordada y un comportamiento de compatibilidad, con pruebas que cubran listeners normales y de coroutine.

Escrito por el modelo de indexación a partir del texto del issue.

Evaluación

Stack tecnológico
postgresql, python
Área
api, database
Tipo de issue
Nueva funcionalidad
Dificultad
4/5
Tiempo estimado
3-5 días
Estado de actividad
Estancado
Claridad
Necesita aclaración
Aptitud para principiantes
32/100

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.