Mengintegrasikan Python ke Cloudflare Workers: menggunakan Pyodide dan WebAssembly
- Kini Python dapat digunakan di Cloudflare Workers.
- Berbeda dari dukungan bahasa selain JavaScript sebelumnya, implementasi Python diintegrasikan langsung ke runtime
workerd.
- Semua binding seperti Vectorize, Workers AI, R2, dan Durable Objects didukung.
- Sebagian paket Python populer seperti FastAPI, Langchain, dan Numpy dapat diimpor.
- Tidak memerlukan tahap build terpisah atau toolchain eksternal.
Lebih dari sekadar mengompilasi ke WebAssembly
- Cloudflare Workers telah mendukung WebAssembly sejak 2018.
- Hanya mengompilasi bahasa ke WebAssembly atau JavaScript saja tidaklah cukup.
- Ekosistem paket yang familier bagi pengembang juga harus didukung.
Siklus hidup Python Worker
- Pyodide tertanam di
workerd, sehingga kode Python bisa ditulis.
- Dengan menentukan file
.py melalui file Wrangler.toml lalu menjalankan npx wrangler@latest dev, runtime akan otomatis menyuntikkan Pyodide.
Interpreter Python yang tertanam di runtime Workers
- CPython adalah implementasi referensi Python, dan Pyodide adalah hasil porting CPython ke WebAssembly.
- Pyodide menyediakan sebagian besar pustaka standar Python serta FFI yang memungkinkan pemanggilan API JavaScript secara langsung.
Keajaiban Pyodide dan antarmuka fungsi eksternal (FFI)
- FFI Pyodide memungkinkan Python mengakses fungsionalitas JavaScript.
- Dengan ini, paket seperti FastAPI dan Langchain dapat langsung digunakan.
Mengapa dynamic linking itu penting, dan static linking tidak cukup
- Banyak paket Python menggunakan C FFI untuk memuat pustaka native.
- Melalui dynamic linking, Pyodide dapat mendukung banyak paket Python yang memiliki dependensi pustaka native.
Dukungan pustaka server dan klien
- Python memiliki banyak pustaka klien HTTP populer seperti httpx, urllib3, dan requests, tetapi di Pyodide pustaka-pustaka ini tidak bekerja secara default.
- Pustaka klien asinkron dapat melakukan request dengan menggunakan Fetch API.
Mengimpor paket Python
- Python Workers mendukung subset paket Python yang disediakan langsung oleh Pyodide.
- Cukup tambahkan paket ke file
requirements.txt.
Mengurangi waktu cold start dengan snapshot memori
- Dalam proses menyuntikkan Pyodide ke Worker dan mengunggahnya ke Cloudflare, snapshot memori dibuat untuk mengurangi waktu cold start.
Future-proofing untuk versi Pyodide dan tanggal kompatibilitas
- Dengan menggunakan tanggal kompatibilitas dan flag kompatibilitas, perilaku baru serta perubahan yang berpotensi tidak kompatibel ke belakang dapat dipilih secara eksplisit.
Cara kerja binding di Python Workers
- Pyodide menyediakan FFI ke JavaScript sehingga objek, metode, fungsi, dan lainnya di JavaScript dapat digunakan langsung dari Python.
Memulai Python Workers
- Dukungan nyata untuk bahasa pemrograman baru membutuhkan investasi besar yang melampaui sekadar "hello world".
- Python adalah bahasa pemrograman paling populer setelah JavaScript, dan Cloudflare terus berupaya memperluas dukungan paket Python serta meningkatkan performa.
Opini GN⁺
- Dukungan Python Workers dari Cloudflare merupakan perkembangan penting yang memperluas penggunaan Python dalam arsitektur serverless. Ini memberi pengembang Python lebih banyak fleksibilitas dan pilihan, serta membuka peluang untuk membangun aplikasi berbasis cloud tanpa bergantung pada JavaScript.
- Integrasi Python ke WebAssembly melalui Pyodide menghadirkan kemungkinan baru untuk menjalankan kode Python di browser dan lingkungan serverless. Ini dapat berdampak besar pada ekosistem Python, terutama dengan mendorong penggunaan Python di area seperti data science dan machine learning, tempat JavaScript tidak dominan.
- Teknologi dynamic linking dan snapshot memori mempercepat waktu muat awal serta menyediakan cara untuk berbagi sumber daya secara efisien. Ini merupakan peningkatan performa penting, khususnya pada sistem terdistribusi berskala besar.
- Pengelolaan versi melalui tanggal kompatibilitas dan flag memberikan cara yang fleksibel untuk menerima fitur baru dan pembaruan sambil tetap menjaga stabilitas kode yang sudah ada. Ini adalah faktor penting bagi perusahaan yang mengoperasikan layanan dalam jangka panjang.
- Seiring Cloudflare memperluas dukungan untuk Python Workers, pengembang Python akan memiliki lebih banyak opsi saat mengintegrasikan layanan cloud yang ada atau mengembangkan layanan baru. Ini menunjukkan bahwa Python dapat memainkan peran penting dalam ranah komputasi serverless.
1 komentar
Komentar Hacker News
Tanggapan positif yang menyatakan senang karena Cloudflare semakin memberi perhatian pada menjalankan Python di Edge melalui WebAssembly.
Pendapat bahwa Cloudflare menyediakan fitur yang sangat baik untuk hosting dan database, tetapi belum terlalu berhasil dalam memasarkan diri sebagai platform pengembang.
Penilaian positif dari pengalaman menggunakan JS workers melalui Cloudflare, yang dinilai mudah digunakan dan sangat cepat.
Pendapat bahwa perbandingan performa dengan JS worker akan membantu.
Pendapat bahwa dengan Pyodide yang kini mendapat dukungan serius, mulai terlihat harapan bahwa Python bisa menjadi alternatif sejati bagi JavaScript di frontend.
Ada pertanyaan apakah demo yang menggunakan lzma itu disengaja, atau hanya kebetulan.
Pendapat bahwa ini merupakan game changer untuk menjalankan pekerjaan terkait AI di Cloudflare, dan sesuatu yang sudah lama dinantikan.
Pendapat yang berharap Cloudflare mengimplementasikan workers yang tidak terbatas pada JS workers dan memperlakukan WASM sebagai warga kelas satu.
Mendapat hasil yang baik saat membuat situs statis menggunakan CF Pages, dan tertarik dengan penawaran open source LLM-as-a-service dari Cloudflare.
Pendapat yang penasaran bagaimana pembatasan untuk hanya menggunakan paket Pyodide akan memengaruhi build yang tidak sepele.