Le projet Trio vise à produire une bibliothèque d'E/S asynchrone/attente-native de qualité production, sous licence permissive pour Python. Comme toutes les bibliothèques asynchrones, son objectif principal est de vous aider à écrire des programmes qui font plusieurs choses en même temps avec des E/S parallélisées . Une araignée Web qui souhaite récupérer de nombreuses pages en parallèle, un serveur Web qui doit jongler simultanément avec de nombreux téléchargements et connexions Websocket, un superviseur de processus surveillant plusieurs sous-processus... ce genre de chose. Par rapport à d'autres bibliothèques, Trio tente de se distinguer en mettant l'accent de manière obsessionnelle sur la convivialité et l'exactitude . La concurrence est compliquée ; nous essayons de faciliter la tâche .
Trio a été conçu dès le départ pour tirer parti des dernières fonctionnalités de Python et s'inspire de nombreuses sources, en particulier Curio de Dave Beazley. La conception qui en résulte est radicalement plus simple que celle de concurrents plus anciens comme asyncio et Twisted, mais tout aussi performante. Trio est la bibliothèque d'E/S Python dont j'ai toujours rêvé ; Je trouve que cela rend la création de programmes orientés E/S plus facile, moins sujette aux erreurs et tout simplement plus amusante. Peut-être que vous retrouverez la même chose.
Ce projet est jeune et encore quelque peu expérimental : la conception globale est solide et les fonctionnalités existantes sont entièrement testées et documentées, mais vous pouvez rencontrer des fonctionnalités manquantes ou des aspérités. Nous vous encourageons à l'utiliser, mais vous devez lire et vous abonner au numéro 1 pour recevoir un avertissement et avoir la possibilité de donner votre avis sur toute modification entraînant une rupture de compatibilité.
Je veux l'essayer ! Génial! Nous avons un tutoriel convivial pour vous aider à démarrer ; aucune expérience préalable en codage asynchrone n’est requise.
Ugh, je ne veux pas lire tout ça – montre-moi du code ! Si vous êtes impatient, voici un exemple simple de concurrence, un client d'écho et un serveur d'écho.
Comment Trio rend-il les programmes plus faciles à lire et à raisonner que les approches concurrentes ? Trio est basé sur une nouvelle façon de penser que nous appelons « concurrence structurée ». La meilleure introduction théorique est l'article Notes sur la concurrence structurée, ou : Go déclaration considérée comme nuisible. Ou consultez cette conférence à la PyCon 2018 pour voir une démonstration de l'implémentation de l'algorithme « Happy Eyeballs » dans une ancienne bibliothèque par rapport à Trio.
Cool, mais est-ce que ça fonctionnera sur mon système ? Probablement! Tant que vous disposez d'une sorte de Python 3.9 ou supérieur (CPython ou les versions actuellement maintenues de PyPy3 conviennent tous les deux) et que vous utilisez Linux, macOS, Windows ou FreeBSD, alors Trio fonctionnera. D'autres environnements peuvent également fonctionner, mais ce sont ceux sur lesquels nous testons. Et toutes nos dépendances sont du pur Python, à l'exception de CFFI sur Windows, qui dispose de roues disponibles, donc l'installation devrait être facile (aucun compilateur C n'est nécessaire).
Je l'ai essayé, mais ça ne marche pas. Désolé d'entendre ça ! Vous pouvez essayer de demander de l'aide dans notre salon de discussion ou notre forum, signaler un bug ou publier une question sur StackOverflow, et nous ferons de notre mieux pour vous aider.
Le trio est génial, et je veux contribuer à le rendre encore plus génial ! Tu es le meilleur ! Il y a des tonnes de travail à faire – combler les fonctionnalités manquantes, créer un écosystème de bibliothèques utilisant Trio, tester l'utilisabilité (par exemple, essayez peut-être d'apprendre à vous-même ou à un ami à utiliser Trio et faites une liste de chaque message d'erreur que vous rencontrez et placez-le à l'endroit où vous vous trouvez). vous vous êtes trompé ?), améliorer la documentation, ... consultez notre guide des contributeurs !
Je n'ai pas l'intention de l'utiliser dans l'immédiat, mais j'adore m'intéresser à la conception des bibliothèques d'E/S ! C'est un peu bizarre ? Mais soyons honnêtes, vous vous intégrerez très bien ici. Nous avons tout un sous-forum pour discuter de la concurrence structurée (les développeurs d'autres systèmes sont les bienvenus !). Ou consultez notre discussion sur les choix de conception, la liste de lecture et les problèmes étiquetés conception-discussion.
Je veux m'assurer que les avocats de mon entreprise ne se fâcheront pas contre moi ! Ne vous inquiétez pas, Trio est sous licence permissive sous votre choix de MIT ou Apache 2. Voir LICENCE pour plus de détails.
Les contributeurs sont priés de suivre notre code de conduite dans tous les espaces du projet.