python python-3.5 python-asyncio

python - Pasar asyncio loop por argumento o usar el asyncio loop predeterminado



python-3.5 python-asyncio (1)

Estoy usando asyncio en mi aplicación y estoy un poco confundido acerca de pasar el bucle de eventos como argumento.

Tienes tres posibilidades al escribir una función / método usando el bucle de eventos :

  • Pasar el bucle de eventos asyncio como argumento
  • No use un argumento para el bucle de eventos y use asyncio.get_event_loop()
  • Haz que sea opcional pasar el bucle de evento como argumento. Si no se pasa, use asyncio.get_event_loop()

Parece que el último caso se usa la mayor parte del tiempo, pero incluso en la API de asyncio el uso es inconsistente. Como no tengo sangría para usar dos bucles de eventos separados , ¿qué es lo que habla en contra de usar solo asyncio.get_event_loop() cuando sea necesario?

¿Cuál es la mejor manera de ir?


Una buena (como en el elogio de Guido van Rossum) en la publicación del blog que analiza esto es Algunas reflexiones sobre el diseño de API asíncrono en un mundo post-async / await . Con una discusión de seguimiento de los desarrolladores de Python Core here .

TLDR;

Si solo estás usando un bucle de eventos, no importa.

Si está administrando varios bucles y tiene python> = 3.6, en su mayoría no importa: no use argumentos y use asyncio.get_event_loop() cuando sea necesario, le dará el bucle correcto.