Intégrer Python à Cloudflare Workers : avec Pyodide et WebAssembly
- Python peut désormais être utilisé dans Cloudflare Workers.
- Contrairement à la prise en charge précédente de langages autres que JavaScript, l’implémentation Python est directement intégrée au runtime
workerd.
- Tous les bindings comme Vectorize, Workers AI, R2 et Durable Objects sont pris en charge.
- Il est possible d’importer une partie de packages Python populaires comme FastAPI, Langchain et Numpy.
- Aucune étape de build séparée ni toolchain externe n’est nécessaire.
Au-delà de la simple compilation vers WebAssembly
- Cloudflare Workers prend en charge WebAssembly depuis 2018.
- Il ne suffit pas de compiler un langage vers WebAssembly ou JavaScript.
- Il faut aussi prendre en charge l’écosystème de packages auquel les développeurs sont habitués.
Cycle de vie d’un Worker Python
- Pyodide est intégré à
workerd, ce qui permet d’écrire du code Python.
- Il suffit d’indiquer un fichier
.py via le fichier Wrangler.toml puis d’exécuter npx wrangler@latest dev pour que le runtime injecte automatiquement Pyodide.
Un interpréteur Python intégré au runtime Workers
- CPython est l’implémentation de référence de Python, et Pyodide est un portage de CPython vers WebAssembly.
- Pyodide fournit l’essentiel de la bibliothèque standard Python ainsi qu’une FFI permettant d’appeler directement des API JavaScript.
La magie de Pyodide et de l’interface de fonctions externes (FFI)
- La FFI de Pyodide permet au code Python d’accéder aux fonctionnalités JavaScript.
- Cela permet d’utiliser directement des packages comme FastAPI et Langchain.
Pourquoi l’édition de liens dynamique est indispensable, et pourquoi l’édition statique ne suffit pas
- De nombreux packages Python utilisent une FFI C pour importer des bibliothèques natives.
- Grâce à l’édition de liens dynamique, Pyodide peut prendre en charge de nombreux packages Python dépendant de bibliothèques natives.
Prise en charge des bibliothèques serveur et client
- Python dispose de bibliothèques clientes HTTP populaires comme httpx, urllib3 et requests, mais elles ne fonctionnent pas nativement dans Pyodide.
- Les bibliothèques clientes asynchrones peuvent effectuer des requêtes via la Fetch API.
Importer des packages Python
- Les Python Workers prennent en charge un sous-ensemble des packages Python fournis directement par Pyodide.
- Il suffit d’ajouter les packages dans le fichier
requirements.txt.
Réduire le temps de cold start grâce aux instantanés mémoire
- Lors de l’injection de Pyodide dans le Worker et de son upload vers Cloudflare, un instantané mémoire est créé afin de réduire le temps de cold start.
Pérenniser la compatibilité avec les versions de Pyodide et les dates de compatibilité
- Les dates de compatibilité et les flags de compatibilité permettent d’opter explicitement pour de nouveaux comportements et des changements potentiellement non rétrocompatibles.
Fonctionnement des bindings dans les Python Workers
- Pyodide fournit une FFI vers JavaScript, ce qui permet d’utiliser directement depuis Python des objets, méthodes et fonctions JavaScript.
Bien démarrer avec Python Workers
- Une véritable prise en charge d’un nouveau langage de programmation exige un investissement important au-delà du simple "hello world".
- Python est le langage de programmation le plus populaire après JavaScript, et Cloudflare continue d’élargir la prise en charge des packages Python et d’améliorer les performances.
L’avis de GN⁺
- La prise en charge de Python Workers par Cloudflare constitue une avancée importante pour étendre l’usage de Python dans les architectures serverless. Elle offre davantage de flexibilité et de choix aux développeurs Python, tout en ouvrant la possibilité de créer des applications cloud sans dépendre de JavaScript.
- L’intégration de Python à WebAssembly via Pyodide ouvre de nouvelles possibilités pour exécuter du code Python dans le navigateur comme dans les environnements serverless. Cela peut avoir un impact majeur sur l’écosystème Python, en particulier dans des domaines comme la data science et le machine learning où JavaScript n’est pas dominant.
- Les technologies d’édition de liens dynamique et d’instantanés mémoire permettent de réduire le temps de chargement initial et de partager plus efficacement les ressources. Cela représente un gain de performance important, en particulier dans les systèmes distribués à grande échelle.
- La gestion des versions via les dates de compatibilité et les flags fournit une manière souple d’adopter de nouvelles fonctionnalités et mises à jour tout en préservant la stabilité du code existant. C’est un élément important pour les entreprises qui exploitent des services sur le long terme.
- À mesure que Cloudflare étend la prise en charge de Python Workers, les développeurs Python disposent de davantage d’options pour intégrer des services cloud existants ou en créer de nouveaux. Cela montre que Python peut jouer un rôle important dans le domaine du serverless computing.
1 commentaires
Commentaires sur Hacker News
Réaction positive : heureux de voir Cloudflare accorder davantage d’attention à l’exécution de Python à l’edge via WebAssembly.
cold start) de Python sur Cloudflare Workers est d’environ 1 seconde dans le meilleur des cas.Avis selon lequel Cloudflare propose d’excellentes fonctionnalités pour l’hébergement et les bases de données, mais n’a pas vraiment réussi à se positionner en tant que plateforme pour développeurs.
Retour d’expérience positif sur l’usage de JS workers via Cloudflare : c’est simple à utiliser et très rapide.
Avis qu’une comparaison des performances avec les JS workers serait utile.
Opinion selon laquelle, avec le sérieux du support apporté à Pyodide, on peut espérer que Python devienne une véritable alternative à JavaScript côté frontend.
Question sur le fait de savoir si la démo utilisant
lzmaétait intentionnelle ou simplement fortuite.Avis qualifiant cela de game changer pour exécuter des tâches liées à l’IA sur Cloudflare, chose attendue depuis longtemps.
Souhait que Cloudflare implémente des workers qui ne soient pas limités aux JS workers et traitent WASM comme un citoyen de première classe.
Bon retour sur l’utilisation de CF Pages pour créer des sites statiques, et intérêt marqué pour l’offre open source de Cloudflare de type LLM-as-a-service.
Avis s’interrogeant sur l’impact de la limitation aux seuls paquets Pyodide pour des builds non triviaux.