Índice de API de alto nivel
***************************

Esta página lista todas las APIs async/await habilitadas de alto
nivel.


Tareas
======

Utilidades para ejecutar programas asyncio, crear Tareas y esperar a
varias cosas con tiempos de expiración.

+----------------------------------------------------+----------------------------------------------------+
| "run()"                                            | Crea un loop de eventos, ejecuta una corrutina,    |
|                                                    | cierra el loop.                                    |
+----------------------------------------------------+----------------------------------------------------+
| "create_task()"                                    | Lanza una Tarea asyncio.                           |
+----------------------------------------------------+----------------------------------------------------+
| "await" "sleep()"                                  | Duerme por un número de segundos.                  |
+----------------------------------------------------+----------------------------------------------------+
| "await" "gather()"                                 | Programa y espera por cosas concurrentemente.      |
+----------------------------------------------------+----------------------------------------------------+
| "await" "wait_for()"                               | Ejecuta con un tiempo de expiración.               |
+----------------------------------------------------+----------------------------------------------------+
| "await" "shield()"                                 | Protege de la cancelación.                         |
+----------------------------------------------------+----------------------------------------------------+
| "await" "wait()"                                   | Monitorea la completitud.                          |
+----------------------------------------------------+----------------------------------------------------+
| "current_task()"                                   | Retorna la Tarea actual.                           |
+----------------------------------------------------+----------------------------------------------------+
| "all_tasks()"                                      | Retorna todas las tareas para un loop de eventos.  |
+----------------------------------------------------+----------------------------------------------------+
| "Task"                                             | Objeto Tarea.                                      |
+----------------------------------------------------+----------------------------------------------------+
| "run_coroutine_threadsafe()"                       | Programa una corrutina de desde otro hilo del      |
|                                                    | sistema operativo.                                 |
+----------------------------------------------------+----------------------------------------------------+
| "for in" "as_completed()"                          | Monitorea por completitud con un loop "for".       |
+----------------------------------------------------+----------------------------------------------------+

-[ Ejemplos ]-

* Usando asyncio.gather() para ejecutar cosas en paralelo.

* Usando asyncio.wait_for() para forzar un tiempo de expiración.

* Cancelación.

* Usando asyncio.sleep().

* Ver también la página principal de documentación de Tareas.


Colas
=====

Las colas deberían ser usadas para distribuir trabajo entre múltiples
Tareas asyncio, implementar pools de conexiones y patrones pub/sub.

+----------------------------------------------------+----------------------------------------------------+
| "Queue"                                            | Una cola FIFO.                                     |
+----------------------------------------------------+----------------------------------------------------+
| "PriorityQueue"                                    | Una cola de prioridad.                             |
+----------------------------------------------------+----------------------------------------------------+
| "LifoQueue"                                        | Una cola LIFO.                                     |
+----------------------------------------------------+----------------------------------------------------+

-[ Ejemplos ]-

* Usando asyncio.Queue para distribuir carga de trabajo entre varias
  Tareas.

* Ver también la página de documentación de Colas.


Subprocesos
===========

Utilidades para generar subprocesos y ejecutar comandos de consola.

+----------------------------------------------------+----------------------------------------------------+
| "await" "create_subprocess_exec()"                 | Crea un subproceso.                                |
+----------------------------------------------------+----------------------------------------------------+
| "await" "create_subprocess_shell()"                | Ejecuta un comando de consola.                     |
+----------------------------------------------------+----------------------------------------------------+

-[ Ejemplos ]-

* Ejecutando un comando de consola.

* Ver también la documentación de las APIs de subprocesos.


Flujos
======

APIs de alto nivel para trabajar con IO de red.

+----------------------------------------------------+----------------------------------------------------+
| "await" "open_connection()"                        | Establece una conexión TCP.                        |
+----------------------------------------------------+----------------------------------------------------+
| "await" "open_unix_connection()"                   | Establece una conexión de un socket Unix.          |
+----------------------------------------------------+----------------------------------------------------+
| "await" "start_server()"                           | Lanza un servidor TCP.                             |
+----------------------------------------------------+----------------------------------------------------+
| "await" "start_unix_server()"                      | Lanza un servidor de sockets Unix.                 |
+----------------------------------------------------+----------------------------------------------------+
| "StreamReader"                                     | Objeto de alto nivel async/await para recibir      |
|                                                    | datos de red.                                      |
+----------------------------------------------------+----------------------------------------------------+
| "StreamWriter"                                     | Objeto de alto nivel async/await para enviar datos |
|                                                    | de red.                                            |
+----------------------------------------------------+----------------------------------------------------+

-[ Ejemplos ]-

* Cliente TCP de ejemplo.

* Ver también la documentación de APIs de flujos.


Sincronización
==============

Primitivas de sincronización al estilo hilos que pueden ser usadas en
Tareas.

+----------------------------------------------------+----------------------------------------------------+
| "Lock"                                             | Un bloqueo mutex.                                  |
+----------------------------------------------------+----------------------------------------------------+
| "Event"                                            | Un objeto de evento.                               |
+----------------------------------------------------+----------------------------------------------------+
| "Condition"                                        | Un objeto de condición.                            |
+----------------------------------------------------+----------------------------------------------------+
| "Semaphore"                                        | Un semáforo.                                       |
+----------------------------------------------------+----------------------------------------------------+
| "BoundedSemaphore"                                 | Un semáforo acotado.                               |
+----------------------------------------------------+----------------------------------------------------+

-[ Ejemplos ]-

* Usando asyncio.Event.

* Ver también la documentación de las primitivas de sincronización de
  asyncio.


Excepciones
===========

+----------------------------------------------------+----------------------------------------------------+
| "asyncio.TimeoutError"                             | Lanzado en tiempos de expiración por funciones     |
|                                                    | como "wait_for()". Ten en mente que                |
|                                                    | *asyncio.TimeoutError`* **no está relacionada**    |
|                                                    | con la excepción predefinida "TimeoutError".       |
+----------------------------------------------------+----------------------------------------------------+
| "asyncio.CancelledError"                           | Lanzada cuando una Tarea es cancelada. Ver también |
|                                                    | "Task.cancel()".                                   |
+----------------------------------------------------+----------------------------------------------------+

-[ Ejemplos ]-

* Gestionando CancelledError para ejecutar código en petición de
  cancelación.

* Ver también la lista completa de excepciones específicas de asyncio.
