El proyecto Trio tiene como objetivo producir una biblioteca de E/S nativa asíncrona/en espera, con licencia permisiva y calidad de producción para Python. Como todas las bibliotecas asíncronas, su objetivo principal es ayudarle a escribir programas que hagan varias cosas al mismo tiempo con E/S paralelizadas . Una araña web que quiere recuperar muchas páginas en paralelo, un servidor web que necesita hacer malabarismos con muchas descargas y conexiones websocket simultáneamente, un supervisor de procesos que monitorea múltiples subprocesos... ese tipo de cosas. En comparación con otras bibliotecas, Trio intenta distinguirse con un enfoque obsesivo en la usabilidad y la corrección . La concurrencia es complicada; Intentamos que sea fácil hacer las cosas bien .
Trio se creó desde cero para aprovechar las últimas funciones de Python y se inspira en muchas fuentes, en particular en Curio de Dave Beazley. El diseño resultante es radicalmente más simple que el de competidores más antiguos como asyncio y Twisted, pero igual de capaz. Trio es la biblioteca de E/S de Python que siempre quise; Creo que hace que la creación de programas orientados a E/S sea más fácil, menos propensa a errores y simplemente más divertida. Quizás encuentres lo mismo.
Este proyecto es joven y todavía algo experimental: el diseño general es sólido y las características existentes están completamente probadas y documentadas, pero es posible que encuentre funciones faltantes o asperezas. Le recomendamos que lo utilice, pero debe leer y suscribirse al número 1 para recibir una advertencia y tener la oportunidad de dar su opinión sobre cualquier cambio que rompa la compatibilidad.
¡Quiero probarlo! ¡Impresionante! Tenemos un tutorial amigable para comenzar; no se requiere experiencia previa con codificación asíncrona.
Uf, no quiero leer todo eso, ¡muéstrame un código! Si está impaciente, aquí tiene un ejemplo simple de concurrencia, un cliente de eco y un servidor de eco.
¿Cómo hace Trio que los programas sean más fáciles de leer y razonar que los enfoques de la competencia? Trio se basa en una nueva forma de pensar que llamamos "concurrencia estructurada". La mejor introducción teórica es el artículo Notas sobre concurrencia estructurada, o: Declaración Go considerada dañina. O consulte esta charla en PyCon 2018 para ver una demostración de la implementación del algoritmo "Happy Eyeballs" en una biblioteca más antigua en comparación con Trio.
Genial, pero ¿funcionará en mi sistema? ¡Probablemente! Siempre que tenga algún tipo de Python 3.9 o superior (CPython o las versiones mantenidas actualmente de PyPy3 están bien) y esté usando Linux, macOS, Windows o FreeBSD, Trio funcionará. Es posible que otros entornos también funcionen, pero esos son los que probamos. Y todas nuestras dependencias son Python puro, excepto CFFI en Windows, que tiene ruedas disponibles, por lo que la instalación debería ser fácil (no se necesita un compilador de C).
Lo intenté, pero no funciona. ¡Lamento escuchar eso! Puede intentar pedir ayuda en nuestra sala de chat o foro, informar un error o publicar una pregunta en StackOverflow, y haremos todo lo posible para ayudarlo.
¡Trio es increíble y quiero ayudar a hacerlo aún más increíble! ¡Usted es el mejor! Hay mucho trabajo por hacer: completar la funcionalidad que falta, crear un ecosistema de bibliotecas que utilicen Trio, realizar pruebas de usabilidad (por ejemplo, tal vez intente enseñarle a usted mismo o a un amigo a usar Trio y haga una lista de cada mensaje de error que encuentre y coloque dónde). ¿Te confundiste?), mejorando los documentos,... ¡consulta nuestra guía para contribuyentes!
No tengo planes inmediatos de usarlo, ¡pero me encanta aprender sobre el diseño de bibliotecas de E/S! ¿Eso es un poco raro? Pero seamos honestos, encajarás muy bien por aquí. Tenemos un subforo completo para discutir la concurrencia estructurada (¡los desarrolladores de otros sistemas son bienvenidos!). O consulte nuestra discusión sobre opciones de diseño, lista de lectura y temas etiquetados como discusión de diseño.
¡Quiero asegurarme de que los abogados de mi empresa no se enfaden conmigo! No se preocupe, Trio tiene una licencia permisiva según su elección de MIT o Apache 2. Consulte LICENCIA para obtener más detalles.
Se solicita a los contribuyentes que sigan nuestro código de conducta en todos los espacios del proyecto.