Prefacio

Este trabajo se ha traducido utilizando IA. Agradecemos tus opiniones y comentarios: translation-feedback@oreilly.com

Python 3.4 introdujo la biblioteca asyncio, y Python 3.5 produjo las palabras clave async y await para utilizarla de forma palpable. Estas nuevas incorporaciones permiten la llamada programación asíncrona .

Todas estas nuevas funciones, a las que me referiré bajo el nombre único deAsyncio, han sido recibidas por la comunidad Python con cierta cautela; un segmento de la comunidad parece considerarlas complejas y difíciles de entender. Esta opinión no se limita a los principiantes: varios colaboradores de alto nivel de la comunidad Python han expresado sus dudas sobre la complejidad de la API Asyncio en Python, y los educadores de la comunidad han expresado su preocupación sobre la mejor forma de enseñar Asyncio a los estudiantes.

La mayoría de las personas con algunos años de experiencia con Python han utilizado hilos antes, e incluso si no lo has hecho, es probable que hayas experimentado el bloqueo. Por ejemplo, si has escrito programas utilizando la maravillosa biblioteca requests, seguramente te habrás dado cuenta de que tu programa se detiene un poco mientras hace requests.get(url); esto es un comportamiento de bloqueo.

Para tareas puntuales, esto está bien; pero si quieres obtener diez mil URL simultáneamente, va a ser difícil utilizarrequests. La concurrencia a gran escala es una gran razón para aprender y utilizar Asyncio, pero el otro gran atractivo de Asyncio frente a los hilos preferentes es la seguridad: con Asyncio te resultará mucho más fácil evitar los errores de condiciones de carrera.

Mi objetivo con este libro es proporcionarte una comprensión básica de por qué se han introducido estas nuevas funciones y cómo utilizarlas en tus propios proyectos. Más concretamente, pretendo ofrecerte lo siguiente:

  • Una comparación crítica de asyncio y threading para la programación concurrente de redes

  • Comprensión de la nueva sintaxis del lenguaje async/await

  • Una visión general de las nuevas funciones de la biblioteca estándar asyncio en Python

  • Casos prácticos detallados y ampliados con código, que muestran cómo utilizar algunas de las bibliotecas de terceros más populares compatibles con Asyncio.

Empezaremos con una historia que ilustra el cambio de pensamiento que debe acompañar a la transición de la programación con hilos a la programación asíncrona. A continuación, echaremos un vistazo a los cambios introducidos en el propio lenguaje Python para dar cabida a la programación asíncrona. Por último, exploraremos algunas de las formas más eficaces de utilizar estas nuevas funciones.

Las nuevas funciones de Asyncio no van a cambiar radicalmente tu forma de escribir programas. Proporcionan herramientas específicas que sólo tienen sentido para situaciones concretas; pero en las situaciones adecuadas, asyncioes excepcionalmente útil. En este libro, vamos a explorar esas situaciones y cómo puedes abordarlas mejor utilizando las nuevas funciones de Asyncio.

Convenciones utilizadas en este libro

En este libro se utilizan las siguientes convenciones tipográficas:

Cursiva

Indica nuevos términos, URL, direcciones de correo electrónico, nombres de archivo y extensiones de archivo.

Constant width

Se utiliza en los listados de programas, así como dentro de los párrafos para referirse a elementos del programa como nombres de variables o funciones, bases de datos, tipos de datos, variables de entorno, sentencias y palabras clave.

Constant width bold

Muestra comandos u otros textos que deben ser tecleados literalmente por el usuario.

Constant width italic

Muestra el texto que debe sustituirse por valores proporcionados por el usuario o por valores determinados por el contexto.

Consejo

Este elemento significa un consejo o sugerencia.

Nota

Este elemento significa una nota general.

Advertencia

Este elemento indica una advertencia o precaución.

Aprendizaje en línea O'Reilly

Nota

Durante más de 40 años, O'Reilly Media ha proporcionado formación tecnológica y empresarial, conocimientos y perspectivas para ayudar a las empresas a alcanzar el éxito.

Nuestra red única de expertos e innovadores comparten sus conocimientos y experiencia a través de libros, artículos, conferencias y nuestra plataforma de aprendizaje online. La plataforma de aprendizaje en línea de O'Reilly te ofrece acceso bajo demanda a cursos de formación en directo, rutas de aprendizaje en profundidad, entornos de codificación interactivos y una amplia colección de textos y vídeos de O'Reilly y de más de 200 editoriales. Para más información, visita http://oreilly.com.

Cómo contactar con nosotros

Dirige tus comentarios y preguntas sobre este libro a la editorial:

  • O'Reilly Media, Inc.
  • 1005 Gravenstein Highway Norte
  • Sebastopol, CA 95472
  • 800-998-9938 (en Estados Unidos o Canadá)
  • 707-829-0515 (internacional o local)
  • 707-829-0104 (fax)

Tenemos una página web para este libro, donde se enumeran erratas, ejemplos y cualquier información adicional. Puedes acceder a ella en https://oreil.ly/using-asyncio-in-python.

Envía un correo electrónico para comentar o hacer preguntas técnicas sobre este libro.

Para más información sobre nuestros libros, cursos, conferencias y noticias, consulta nuestro sitio web en http://www.oreilly.com.

Encuéntranos en Facebook: http://facebook.com/oreilly

Síguenos en Twitter: http://twitter.com/oreillymedia

Míranos en YouTube: http://www.youtube.com/oreillymedia

Agradecimientos

Muchas gracias a Ashwini Balnaves y a Kevin Baker por trabajar en los primeros borradores de este libro y por sus valiosos comentarios. Estoy profundamente agradecido a Yury Selivanov por dedicar su valioso tiempo a revisar una versión anterior de este libro, cuando se publicó por primera vez como informe de O'Reilly. Por último, también quiero dar las gracias al equipo de O'Reilly por su excelente apoyo editorial.

Get Utilizar Asyncio en Python now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.