Python resmi jadi bahasa kelas satu di Cloudflare Workers. Pengumuman generally availability itu dipublikasikan di blog Cloudflare pada 21 September 2026, ditandatangani tiga engineer: Gyeongjae Choi, Dominik Picheta, dan Hood Chatham. Yang berubah bukan cuma status rilis, tapiseluruh pengalaman menulis backend Python di edge: binding Cloudflare bisa dipakai langsung tanpa kode tempel JavaScript, framework seperti FastAPI dan Django bisa jalan apa adanya, dan driver database PostgreSQL serta MySQL akhirnya bisa jalan di runtime yang dulu tidak punya socket sama sekali.
Bagi developer Indonesia yang stack-nya Python (Django untuk backend, FastAPI untuk API internal, atau script AI yang butuh inference murah), ini mengubah peta pilihan infrastruktur edge. Artikel ini merangkum apa yang benar-benar baru, batasan yang masih ada, dan kasus pakai yang masuk akal.
Dari Eksperimen Dua Tahun Lalu ke First-Class Language
Python Workers pertama kali diperkenalkan dua tahun sebelum pengumuman GA. Fondasinya adalah WebAssembly: runtime Workers sudah mendukung Wasm sejak 2018, sehingga strategi Cloudflare adalah menjalankan interpreter Python yang dikompilasi ke Wasm lewat Pyodide. Target yang mereka nyatakan sejak awal: membuat menulis Worker dalam Python sama mudahnya dengan TypeScript, dan membuat ekosistem paket Python "just work".
GA artinya kemampuan itu sudah produksi-ready untuk semua orang, bukan preview lagi. Secara platform, Python kini bisa disandingkan dengan TypeScript sebagai bahasa utama di Cloudflare Developer Platform, dan dapat menyambung ke Workers AI, R2, D1, Hyperdrive, Durable Objects, Queues, Workflows, sampai fasilitas Dynamic Workers yang memungkinkan satu Worker membuat Python Worker lain di dalamnya.
Binding Kini Native: Selamat Tinggal Glue Code to_js
Masalah terbesar Python Workers versi awal adalah lapisan perbatasannya. Semua binding Cloudflare berbicara dalam tipe data JavaScript, jadi pengembang Python harus mengkonversi objek secara eksplisit di setiap RPC. Contoh dari blog resminya, mengirim dictionary Python ke Cloudflare Queue dulu butuh:
from pyodide.ffi import to_js
import js
self.env.QUEUE.send(to_js({"key": "value"}, dict_converter=js.Object.fromEntries))
Baris seperti itu terlihat sepele, tapi Cloudflare menyebutnya sumber error yang umum, baik untuk manusia maupun untuk AI agent yang menulis kode. Dengan GA, seluruh konversi tipe dibungkus di dalam runtime dan SDK Python. Versi bersihnya tinggal:
self.env.QUEUE.send({"key": "value"})
Artinya semua binding bisa dipakai secara pythonic tanpa menulis satu baris JavaScript pun. Ini perubahan developer experience paling konkret dari rilis tersebut.
FastAPI, Django, Flask: Connector ASGI dan WSGI Bawaan
Fitur yang paling banyak dibicarakan komunitas: aplikasi web framework yang sudah ada bisa langsung dijadikan Worker. Asumsikan ada aplikasi FastAPI biasa yang biasanya dijalankan dengan uvicorn. Di Python Workers, yang perlu ditambah hanya jembatan kecil:
from workers import asgi
class Default(WorkerEntrypoint):
async def fetch(self, request):
return await asgi.fetch(app, request, self.env)
# atau ekuivalennya
Default = asgi.entrypoint(app)
Untuk aplikasi sinkron seperti Django, tersedia workers.wsgi dengan pola yang sama. Secara internal, Workers-lah yang berperan sebagai web server: jaringan global Cloudflare menangani koneksi masuk, load balancing, dan scaling, sementara connector ASGI/WSGI cuma menerjemahkan request JavaScript menjadi struktur yang dipahami aplikasi Python. Cloudflare menegaskan connector ini bekerja untuk framework apa pun yang memakai antarmuka WSGI atau ASGI, bukan hanya tiga yang disebut di judul.
Hyperdrive: Driver Database Nyasar Lewat Sistem Operasi Palsu
Bagian yang secara teknis paling menarik adalah dukungan database relasional. Driver Python seperti asyncpg dan aiomysql butuh socket TCP. Di dalam sandbox WebAssembly, sistem panggilan POSIX untuk jaringan normalnya adalah stub yang selalu gagal, jadi dulu mustahil memasang database dari Worker Python.
Cloudflare menyelesaikannya dengan mengimplementasikan socket system call di atas Workers connect API. Ketika driver membuka koneksi, operasinya diterjemahkan menjadi panggilan JavaScript yang sesuai di runtime. Karena penerjemahannya terjadi di level system call, driver tidak perlu tahu sama sekali bahwa ia sedang tidak berjalan di Linux biasa. Hasilnya, Hyperdrive bisa dipakai dengan kode yang sangat konvensional:
import aiomysql
from workers import WorkerEntrypoint
class Default(WorkerEntrypoint):
async def fetch(self, request):
hd = self.env.HYPERDRIVE_MYSQL
conn = await aiomysql.connect(
host=hd.host, port=int(hd.port),
user=hd.user, password=hd.password,
db=hd.database, ssl=None)
cur = await conn.cursor()
await cur.execute("SELECT username FROM user")
r = await cur.fetchall()
cur.close(); conn.close()
Binding-nya didefinisikan di konfigurasi Wrangler seperti biasa lewat blok hyperdrive dengan id binding.
Ekosistem Paket Wasm: PEP 783 dan PyEmscripten
Kelemahan klasik Python-on-Wasm adalah paket dengan ekstensi C/C++/Rust: semuanya harus dikompilasi silang ke WebAssembly, dan sebelumnya tidak ada standar untuk itu. Cloudflare harus mengompilasi dan meng-hosting paket tertentu secara manual, yang membatasi jumlah paket yang bisa dipakai. Solusi yang dibawa ke GA ini bersifat upstream: mereka mengusulkan PEP 783, standardisasi platform runtime Python-di-browser yang disebut PyEmscripten. Setelah lebih dari setahun diskusi, PEP tersebut diterima, sehingga maintainer paket bisa membangun dan menerbitkan wheel untuk satu platform yang berlaku di semua lingkungan yang mengimplementasikannya.
Cloudflare juga menstabilkan toolchain build Pyodide agar bisa dipakai maintainer mana pun, dan menambahkan dukungan platform PyEmscripten ke cibuildwheel, tool CI yang sudah umum di ekosistem Python. Proses adopsinya bertahap, tapi arah standarnya sudah jelas, dan ini kabar baik untuk komunitas Python-on-Wasm secara umum di luar Cloudflare.
Kasus Pakai Paling Jelas: Agent dan Pipeline AI
Ekosistem data science dan machine learning membuat Python pilihan alami untuk agent AI, dan ini yang diposisikan Cloudflare sebagai kasus pakai utama. Hambatan lamanya: library seperti openai, langchain, dan mcp bergantung pada HTTP client (requests, httpx) yang dulu tidak jalan di Workers. Dua hal ditutup: kontribusi upstream supaya HTTP client itu merutekan request lewat JavaScript fetch API di lingkungan Wasm, plus dukungan socket low-level yang dibahas di bagian Hyperdrive. Efeknya, seluruh stack networking AI sekarang jalan native di Python Workers.
Di contoh blog-nya, sebuah Worker memanggil model Workers AI lewat langchain-cloudflare dengan model @cf/meta/llama-3.3-70b-instruct-fp8-fast, dan contoh lain memakai @cf/openai/gpt-oss-120b. Pola yang sama berlaku untuk inference di GPU jaringan Cloudflare atau proxy lewat AI Gateway.
Cara Mulai yang Realistis, Tanpa Overhaul
Pola adopsi yang paling aman adalah memulai dari satu endpoint, bukan memindahkan seluruh backend. Secara praktis urutannya begini. Pertama, install toolchain Wrangler seperti biasa dan scaffold Worker Python dari template resmi; dokumentasi Python Workers di situs Cloudflare merinci perintah awalnya. Kedua, pindahkan satu rute sederhana, misalnya health check atau endpoint pencarian yang stateless, lalu sambungkan ke binding yang dibutuhkan; untuk database, daftarkan binding hyperdrive di wrangler config dengan id Hyperdrive yang sudah dibuat di dashboard. Ketiga, bungkus logika bisnis dengan fungsi biasa dulu, baru kenakan decorator framework ketika bentuknya sudah stabil.
Untuk tim yang aplikasinya sudah FastAPI, jalur tercepat justru bukan menulis Worker baru, tapi memindahkan aplikasi yang ada dan menempelkan connector asgi.entrypoint seperti contoh di atas. Router, dependency injection, dan model Pydantic tidak perlu diubah; yang berubah adalah cara aplikasinya dijalankan, dari proses uvicorn menjadi fetch handler yang di-spawn per request. Setelah itu baru audit penggunaan memori dan koneksi database: pola connection pooling ala server konvensional sebaiknya diganti mengikuti model Hyperdrive agar koneksi ikut di-manage platform.
Satu hal yang layak disiapkan di awal adalah strategi dependency. Karena paket harus tersedia sebagai wheel WebAssembly, kunci dulu requirements produksi pada versi yang memang sudah punya build Pyodide/PyEmscripten sebelum membuat keputusan migrasi. Paket inti populer umumnya sudah tersedia, tapi library yang jarang dipakai perlu dicek satu-satu. Cloudflare sendiri menyatakan aktif bekerja dengan maintainer paket besar dan membuka kanal permintaan di Discord serta GitHub untuk paket yang belum di-build, sinyal bahwa daftar ini akan terus memanjang sepanjang kuartal berikutnya.
Kalau proyeknya masih tahap evaluasi, langkah termurahnya adalah mengambil satu API internal yang trafiknya kecil, deploy lewat Worker Python, dan jalankan berdampingan dengan versi VPS selama dua minggu. Biaya percobaan model ini nyaris nol karena layer gratis Workers cukup untuk uji fungsional, dan hasilnya langsung menjawab pertanyaan arsitektur yang paling mahal untuk ditebak: apakah tim benar-benar butuh state in-memory antar request atau tidak.Batasan yang Perlu Disadari Sebelum Migrasi
Entri GA bukan berarti semua hal bisa dipindah apa adanya. Beberapa catatan yang jujur perlu disebut:
- Sandbox Wasm tetap sandbox. Paket dengan native extension hanya jalan kalau sudah ada build PyEmscripten/Pyodide-nya. Adopsi ekosistem masih berjalan, dan Cloudflare mengajak pengembang melaporkan paket yang belum tersedia agar tim mereka bantu build.
- Model eksekusi edge berbeda dengan server. Tidak ada proses panjang, thread pool, atau state in-memory antar request. Arsitektur yang mengandalkan itu perlu didesain ulang, bukan sekadar dipindah.
- Framework async lebih diuntungkan. Jembatan ASGI lebih natural di runtime berbasis promise; aplikasi WSGI sinkron didukung, tapi pola blocking berat tetap tidak sejalan dengan filosofi Workers.
Untuk Developer Indonesia, Ini Berarti Apa?
Dua tahun terakhir banyak tim di sini membangun API kecil dengan FastAPI di VPS atau container. Python Workers GA membuka opsi ketiga: API edge tanpa server yang di-maintain, dengan latency global termasuk dari Jakarta. Kasus yang paling masuk akal adalah endpoint publik ringan (webhook, BFF untuk mobile, REST API sederhana), proxy AI dengan rate limiting, dan API yang trafik-nya melonjak mendadak, karena scaling-nya ditangani platform. Proyek yang butuh background worker berat, koneksi SSH, atau library native yang belum diporting masih lebih cocok di container.
Yang ingin mendalami latar teknis Python-di-Wasm, Cloudflare menyinggung talk EuroPython 2026 mereka berjudul Python Everywhere: The State of Python on WebAssembly sebagai bacaan tambahan. Diskusi ekosistemnya juga terbuka lewat Discord dan GitHub mereka. Buat yang lebih dulu ingin membandingkan alternatif serverless edge berbasis JavaScript dan TypeScript, artikel Cloudflare Quick Tunnels dan panduan render di VPS tanpa GPU di Toolkuy masih relevan sebagai pembanding arsitektur.
Kesimpulannya sederhana tapi tegas: kalau selama ini "karena butuh Python" adalah alasan untuk tidak memakai edge, alasan itu sekarang resmi gugur, dan yang tersisa hanyalah keputusan arsitektur biasa, workload apa yang memang cocok jalan di sandbox Wasm.
💬 Komentar (0)
Belum ada komentar. Jadilah yang pertama! 💬