Python Workers Cloudflare GA: chạy FastAPI, Django serverless

Cloudflare vừa công bố Python Workers chính thức GA (general availability) sau hai năm phát triển. Điểm đáng chú ý nhất không phải là "Python chạy được trên Workers" — điều đó đã có từ trước. Cái mới là Python giờ dùng được các binding của Cloudflare (D1, R2, Queues, Hyperdrive...) mà không cần viết một dòng JavaScript glue code nào.
Chuyện gì vừa xảy ra
Theo blog chính thức đăng ngày 21/9, Cloudflare giới thiệu Python Workers lần đầu cách đây hai năm, chạy trên Pyodide — bản Python biên dịch sang WebAssembly. Từ bản thử nghiệm đó đến GA, đội ngũ Cloudflare tập trung giải quyết ba giới hạn lớn. Đó là: gọi binding phải convert kiểu dữ liệu thủ công, không chạy được framework web chuẩn, và không mở được TCP socket nên driver database không hoạt động.
Ở bản GA, cả ba giới hạn này đều đã được xử lý.
Binding giờ "just work" theo kiểu Python
Trước đây, gửi một dict Python vào Cloudflare Queue cần đoạn glue code kiểu này:
from pyodide.ffi import to_js
import js
self.env.QUEUE.send(to_js({"key": "value"}, dict_converter=js.Object.fromEntries))
Giờ chỉ cần:
self.env.QUEUE.send({"key": "value"})
Toàn bộ quá trình convert kiểu dữ liệu giữa Python và JavaScript được đóng gói vào runtime và Python SDK. Với developer, điều này nghĩa là không phải nhớ "đang chạy trong môi trường JS" khi viết code Python — vốn là nguồn lỗi phổ biến cho cả con người lẫn AI coding agent, theo chính lời Cloudflare.
Chạy được FastAPI, Django, Flask thật sự
Python Workers giờ hỗ trợ workers.asgi cho ứng dụng bất đồng bộ (FastAPI) và workers.wsgi cho ứng dụng đồng bộ (Django, Flask). Cơ chế này không chạy một server Python bên trong Worker — thay vào đó, nó dùng chuẩn WSGI/ASGI sẵn có để dịch request JavaScript gốc sang cấu trúc mà framework Python hiểu, rồi trả response ngược lại. Cloudflare Workers platform đóng vai trò web server, xử lý load balancing và scale — developer chỉ cần viết logic ứng dụng như bình thường.
from workers import asgi
class Default(WorkerEntrypoint):
async def fetch(self, request):
return await asgi.fetch(app, request, self.env)
Kết nối Postgres/MySQL qua Hyperdrive
Đây là phần kỹ thuật đáng chú ý nhất. Python Workers chạy trong sandbox WebAssembly, mà driver database như asyncpg hay aiomysql cần mở TCP socket qua module socket chuẩn của Python — thứ vốn không tồn tại trong Wasm. Cloudflare giải quyết bằng cách implement lại socket system call, chuyển hướng chúng qua Workers connect API. Kết quả: driver database dùng bình thường, không cần biết gì về lớp translate bên dưới.
Kết hợp với Hyperdrive, Python Worker giờ kết nối trực tiếp Postgres/MySQL production mà không cần proxy riêng.
Hệ sinh thái package: PEP 783 và PyEmscripten
Vấn đề còn lại là package có native extension (C/C++/Rust) phải cross-compile sang WebAssembly mới chạy được, và trước đây không có chuẩn chung cho việc này — Cloudflare phải tự build và host thủ công. Để giải quyết tận gốc, Cloudflare đề xuất PEP 783, chuẩn hóa nền tảng PyEmscripten cho Python chạy trong môi trường trình duyệt/Wasm. Sau hơn một năm thảo luận, PEP được chấp thuận. Cloudflare cũng thêm hỗ trợ PyEmscripten vào cibuildwheel — công cụ phổ biến để build wheel đa nền tảng — giúp maintainer package dễ dàng build cho nền tảng này hơn.
Đây là dạng đóng góp mang lại lợi ích cho cả cộng đồng Pyodide, không chỉ riêng Cloudflare.
AI agent và pipeline chạy được bằng Python thật
Thư viện như openai, langchain, mcp dựa vào HTTP client (requests, httpx) để gọi API ngoài — vốn không hoạt động trong Python Workers vì thiếu socket cấp thấp. Cloudflare đã đóng góp ngược (upstream) để các client này route request qua fetch API của JavaScript khi chạy trong môi trường WebAssembly. Kết hợp với socket bridge cho Hyperdrive, toàn bộ networking stack giờ hoạt động trơn tru bên trong Python Workers.
So what — ảnh hưởng gì tới developer?
- Không cần học lại stack: team quen Python/FastAPI/Django có thể deploy thẳng lên edge network của Cloudflare mà không phải viết TypeScript hay học API mới
- Database production dùng được ngay: Hyperdrive + driver quen thuộc (
asyncpg,aiomysql) nghĩa là không cần kiến trúc lại data layer chỉ để chạy serverless - AI agent viết bằng Python native:
langchain,mcp,openaichạy thẳng, kết hợp Workers AI để inference ngay trên network Cloudflare — không cần server riêng để host agent - Vẫn có giới hạn: package chưa có wheel PyEmscripten sẽ không chạy được — hệ sinh thái đang trong giai đoạn chuyển đổi, chưa phải mọi package PyPI đều sẵn sàng
Cái đáng chú ý không phải là "thêm một runtime hỗ trợ Python" — GitHub Actions, Lambda, hay Vercel đều đã làm vậy từ lâu. Điểm khác biệt là Cloudflare chọn cách khó hơn: giải quyết tận gốc bài toán native extension trên WebAssembly bằng một PEP chính thức, thay vì chỉ patch riêng cho nền tảng của mình. Nếu PyEmscripten được các nền tảng khác (Pyodide, browser runtime) áp dụng rộng rãi, đây có thể là bước ngoặt cho việc chạy Python trong trình duyệt nói chung, không chỉ trên Cloudflare Workers.
Điều cần biết
- Python Workers GA sau hai năm phát triển, chạy trên Pyodide (Python biên dịch sang WebAssembly)
- Binding Cloudflare (D1, R2, Queues, Hyperdrive) dùng trực tiếp bằng cú pháp Python, không cần convert sang JavaScript thủ công
- FastAPI, Django, Flask chạy được qua
workers.asgi/workers.wsgi, không cần viết lại app - Hyperdrive kết nối Postgres/MySQL production trực tiếp từ Python Worker
- PEP 783 (PyEmscripten) đã được chấp thuận, mở đường cho package Python native extension build cho WebAssembly
- Giới hạn còn lại: package chưa có wheel PyEmscripten vẫn chưa chạy được
Bài viết được hỗ trợ bởi AI (Amy 🌸). Nội dung đã được kiểm duyệt bởi tác giả.
Related Posts
AI Viết Code, Nhưng Ai Review Code? Chọn Ngôn Ngữ & Giới Hạn Của Vibe Coding
AI viết code không có nghĩa developer không cần hiểu code. Hai câu chuyện từ Hacker News về vibe coding mất kiểm soát và bài học cho mọi dev.
Claude Opus 5.5: mạnh hơn Opus 5, giá giảm 40%
Anthropic ra mắt Claude Opus 5.5 — hiệu năng ngang Fable 5.1 trên nhiều tác vụ, chi phí vận hành giảm 40%, và là model chống prompt injection tốt nhất từ trước tới nay.
Real-SWE: benchmark lột trần AI coding agent trên codebase thật
Model tốt nhất chỉ giải đúng 38.8% task lấy từ codebase doanh nghiệp thật. Benchmark mới Real-SWE cho thấy khoảng cách giữa demo và sản xuất.