Integración de Python en Cloudflare Workers: uso de Pyodide y WebAssembly
- Ahora se puede usar Python en Cloudflare Workers.
- A diferencia del soporte anterior para lenguajes distintos de JavaScript, la implementación de Python está integrada directamente en el runtime de workerd.
- Se admiten todos los bindings, como Vectorize, Workers AI, R2 y Durable Objects.
- Se pueden importar algunos de los paquetes populares de Python, como FastAPI, Langchain y Numpy.
- No se requiere una etapa de build separada ni una toolchain externa.
Más que compilar a WebAssembly
- Cloudflare Workers es compatible con WebAssembly desde 2018.
- No basta con compilar un lenguaje a WebAssembly o JavaScript.
- También hay que dar soporte al ecosistema de paquetes con el que los desarrolladores ya están familiarizados.
Ciclo de vida de un Python Worker
- Pyodide está integrado en workerd, lo que permite escribir código en Python.
- Si se especifica un archivo
.py mediante el archivo Wrangler.toml y se ejecuta npx wrangler@latest dev, el runtime inyecta Pyodide automáticamente.
Intérprete de Python integrado en el runtime de Workers
- CPython es la implementación de referencia de Python, y Pyodide es un port de CPython a WebAssembly.
- Pyodide proporciona la mayor parte de la biblioteca estándar de Python y ofrece una FFI que permite llamar directamente a la API de JavaScript.
La magia de Pyodide y la interfaz de funciones externas (FFI)
- La FFI de Pyodide permite acceder a funcionalidades de JavaScript desde Python.
- Gracias a esto, se pueden usar directamente paquetes como FastAPI y Langchain.
Por qué el enlazado dinámico es esencial y el enlazado estático no basta
- Muchos paquetes de Python usan C FFI para importar bibliotecas nativas.
- El enlazado dinámico permite que Pyodide sea compatible con muchos paquetes de Python que dependen de bibliotecas nativas.
Soporte para bibliotecas de servidor y cliente
- Python cuenta con bibliotecas populares de cliente HTTP como httpx, urllib3 y requests, pero en Pyodide no funcionan de forma predeterminada.
- Las bibliotecas cliente asíncronas pueden realizar solicitudes usando la Fetch API.
Importación de paquetes de Python
- Python Workers admite un subconjunto de los paquetes de Python que ofrece directamente Pyodide.
- Basta con agregar los paquetes al archivo
requirements.txt.
Reducir el tiempo de arranque en frío con snapshots de memoria
- Durante el proceso de inyectar Pyodide en el Worker y subirlo a Cloudflare, se crean snapshots de memoria para reducir el tiempo de arranque en frío.
Preparado para el futuro con versiones de Pyodide y fechas de compatibilidad
- Se pueden usar fechas de compatibilidad y flags de compatibilidad para optar explícitamente por nuevos comportamientos y cambios que potencialmente no sean retrocompatibles.
Cómo funcionan los bindings en Python Workers
- Pyodide proporciona una FFI hacia JavaScript, lo que permite usar directamente objetos, métodos y funciones de JavaScript desde Python.
Primeros pasos con Python Workers
- El soporte real para un nuevo lenguaje de programación requiere una gran inversión que va mucho más allá de un simple "hello world".
- Python es el lenguaje de programación más popular después de JavaScript, y Cloudflare sigue trabajando para ampliar el soporte de paquetes de Python y mejorar el rendimiento.
Opinión de GN⁺
- El soporte de Cloudflare para Python Workers es un avance importante para ampliar el uso de Python en arquitecturas serverless. Esto brinda más flexibilidad y opciones a los desarrolladores de Python, y abre la posibilidad de crear aplicaciones basadas en la nube sin depender de JavaScript.
- La integración de Python en WebAssembly a través de Pyodide plantea nuevas posibilidades para ejecutar código Python en navegadores y entornos serverless. Esto puede tener un gran impacto en el ecosistema de Python, especialmente al impulsar su uso en áreas como ciencia de datos y machine learning, donde JavaScript no domina.
- Las tecnologías de enlazado dinámico y snapshots de memoria ofrecen una forma de reducir el tiempo de carga inicial y compartir recursos de manera eficiente. Esto representa una mejora de rendimiento importante, especialmente en sistemas distribuidos a gran escala.
- La gestión de versiones mediante fechas y flags de compatibilidad ofrece una forma flexible de incorporar nuevas funciones y actualizaciones sin comprometer la estabilidad del código existente. Esto es un factor importante para las empresas que operan servicios a largo plazo.
- A medida que Cloudflare amplía el soporte para Python Workers, los desarrolladores de Python tendrán más opciones al integrar servicios en la nube existentes o al crear nuevos servicios. Esto demuestra que Python puede desempeñar un papel importante en el ámbito del cómputo serverless.
1 comentarios
Comentarios de Hacker News
Reacción positiva: da gusto ver que Cloudflare está poniendo más atención en ejecutar Python en el Edge mediante WebAssembly.
cold start) de Python en Cloudflare Workers es, en el mejor de los casos, de alrededor de 1 segundo.Opinión de que Cloudflare ofrece funciones excelentes para hosting y bases de datos, pero no ha tenido mucho éxito al promocionarse como plataforma para desarrolladores.
Evaluación positiva de alguien que ya ha usado JS workers a través de Cloudflare: son fáciles de usar y muy rápidos.
Comentario de que sería útil una comparación de rendimiento con JS worker.
Opinión de que, con Pyodide recibiendo soporte serio, aparece la esperanza de que Python pueda convertirse en una alternativa real a JavaScript en el frontend.
Hay una pregunta sobre si el demo con
lzmafue intencional o simplemente una coincidencia.Opinión de que esto sería un cambio de juego para ejecutar trabajo relacionado con IA en Cloudflare, algo que llevaban mucho tiempo esperando.
Opinión de que Cloudflare debería implementar workers que no se limiten a JS workers y que traten a WASM como ciudadano de primera clase.
Han obtenido buenos resultados usando CF Pages para crear sitios estáticos y les atrae la propuesta open source de LLM-as-a-service de Cloudflare.
Opinión de que se preguntan cómo afectará la limitación de usar solo paquetes de Pyodide a builds que no sean triviales.