Python'ı Cloudflare Workers'a entegre etmek: Pyodide ve WebAssembly kullanımı
- Cloudflare Workers'ta artık Python kullanılabiliyor.
- Önceki JavaScript dışı dil desteklerinden farklı olarak, Python uygulaması doğrudan workerd çalışma zamanına entegre edildi.
- Vectorize, Workers AI, R2, Durable Objects gibi tüm binding'ler destekleniyor.
- FastAPI, Langchain, Numpy gibi popüler Python paketlerinin bir kısmı içe aktarılabiliyor.
- Ayrı bir build adımı ya da harici toolchain gerekmiyor.
WebAssembly'ye derlemenin ötesindeki işler
- Cloudflare Workers, 2018'den beri WebAssembly'yi destekliyor.
- Bir dili yalnızca WebAssembly'ye ya da JavaScript'e derlemek yeterli değil.
- Geliştiricilerin aşina olduğu paket ekosisteminin de desteklenmesi gerekiyor.
Python Worker'ın yaşam döngüsü
- Pyodide, workerd'e gömülü olduğu için Python kodu yazılabiliyor.
- Wrangler.toml dosyası üzerinden
.py dosyasını belirtip npx wrangler@latest dev çalıştırıldığında, çalışma zamanı Pyodide'ı otomatik olarak enjekte ediyor.
Workers çalışma zamanına gömülü Python yorumlayıcısı
- CPython, Python'ın referans uygulamasıdır; Pyodide ise CPython'ın WebAssembly'ye taşınmış halidir.
- Pyodide, Python standart kütüphanesinin büyük bölümünü sunar ve JavaScript API'lerini doğrudan çağırabilen bir FFI sağlar.
Pyodide ve yabancı fonksiyon arayüzünün (FFI) sihri
- Pyodide'ın FFI'ı, Python'dan JavaScript işlevlerine erişmeyi sağlar.
- Bu sayede FastAPI ve Langchain gibi paketler doğrudan kullanılabilir.
Dinamik bağlamanın neden kritik olduğu: statik bağlama yeterli değil
- Birçok Python paketi, C FFI kullanarak yerel kütüphaneleri içe aktarır.
- Dinamik bağlama sayesinde Pyodide, yerel kütüphane bağımlılıkları olan çok sayıda Python paketini destekleyebilir.
Sunucu ve istemci kütüphanesi desteği
- Python'da httpx, urllib3, requests gibi popüler HTTP istemci kütüphaneleri var, ancak bunlar Pyodide'da varsayılan olarak çalışmıyor.
- Asenkron istemci kütüphaneleri, istek yapmak için Fetch API'yi kullanabiliyor.
Python paketlerini içe aktarma
- Python Workers, doğrudan Pyodide tarafından sağlanan Python paketlerinin bir alt kümesini destekliyor.
- Yalnızca
requirements.txt dosyasına paketleri eklemek yeterli.
Bellek snapshot'larıyla cold start süresini azaltma
- Pyodide'ın Worker'a enjekte edilip Cloudflare'a yüklenmesi sırasında, cold start süresini kısaltmak için bellek snapshot'ları oluşturuluyor.
Pyodide sürümü ve uyumluluk tarihleri için geleceğe dönük güvence
- Uyumluluk tarihleri ve uyumluluk flag'leri kullanılarak, yeni davranışlar ile potansiyel olarak geriye dönük uyumsuz değişikliklerin açıkça seçilmesi sağlanıyor.
Python Workers'ta binding'lerin çalışma şekli
- Pyodide, JavaScript için bir FFI sunarak Python içinden JavaScript nesnelerinin, metodlarının, fonksiyonlarının ve benzerlerinin doğrudan kullanılmasını sağlıyor.
Python Workers'a başlamak
- Yeni bir programlama dili için gerçek destek, "hello world"ün ötesine geçen büyük bir yatırım gerektirir.
- Python, JavaScript'ten sonra en popüler programlama dilidir ve Cloudflare, Python paket desteğini genişletmek ve performansı iyileştirmek için çalışmalarını sürdürüyor.
GN⁺ görüşü
- Cloudflare'ın Python Workers desteği, serverless mimaride Python kullanımını genişleten önemli bir gelişme. Bu, Python geliştiricilerine daha fazla esneklik ve seçenek sunuyor; JavaScript'e bağımlı kalmadan bulut tabanlı uygulamalar kurma fırsatı veriyor.
- Pyodide aracılığıyla Python'ın WebAssembly ile entegrasyonu, tarayıcı ve serverless ortamlarda Python kodu çalıştırmak için yeni olanaklar sunuyor. Bu, Python ekosistemi üzerinde büyük etki yaratabilir ve özellikle veri bilimi ile makine öğrenimi gibi JavaScript'in baskın olmadığı alanlarda Python kullanımını teşvik edebilir.
- Dinamik bağlama ve bellek snapshot teknolojileri, ilk yükleme süresini kısaltıyor ve kaynakların verimli paylaşımı için bir yöntem sunuyor. Bu, özellikle büyük ölçekli dağıtık sistemlerde önemli bir performans iyileştirmesi anlamına geliyor.
- Uyumluluk tarihleri ve flag'ler üzerinden sürüm yönetimi, mevcut kodun kararlılığını korurken yeni özellikleri ve güncellemeleri benimsemek için esnek bir yol sunuyor. Bu, uzun vadeli hizmet işleten şirketler için önemli bir unsur.
- Cloudflare Python Workers desteğini genişlettikçe, Python geliştiricileri mevcut bulut hizmetleriyle entegrasyon veya yeni hizmetler geliştirme sırasında daha fazla seçeneğe sahip olacak. Bu da Python'ın serverless computing alanında önemli bir rol oynayabileceğini gösteriyor.
1 yorum
Hacker News görüşleri
Cloudflare’ın Edge üzerinde WebAssembly aracılığıyla Python çalıştırmaya daha fazla ilgi göstermesinden memnuniyet duyan olumlu bir tepki.
Cloudflare’ın hosting ve veritabanı konusunda harika özellikler sunduğu, ancak kendini bir geliştirici platformu olarak pazarlamada çok başarılı olmadığı görüşü.
Cloudflare üzerinden JS workers kullanma deneyimi olduğu ve kullanımının kolay, hızının da çok yüksek olduğu yönünde olumlu bir değerlendirme.
JS worker ile performans karşılaştırmasının faydalı olacağı görüşü.
Pyodide ciddi destek alırken, Python’un frontend’de JavaScript’e gerçek bir alternatif olabileceğine dair umut görüldüğü görüşü.
lzmakullanılan demonun kasıtlı mı yoksa sadece tesadüf mü olduğuna dair bir soru var.Cloudflare üzerinde yapay zeka ile ilgili işleri çalıştırmak açısından bunun oyun değiştirici olduğu ve uzun süredir beklendiği görüşü.
Cloudflare’ın JS workers ile sınırlı kalmayıp, WASM’ı birinci sınıf vatandaş olarak ele alan workers uygulamasını hayata geçirmesi gerektiği görüşü.
CF Pages ile statik site oluştururken iyi sonuçlar alındığı ve Cloudflare’ın açık kaynaklı LLM-as-a-service teklifinin çok çekici bulunduğu belirtiliyor.
Yalnızca Pyodide paketlerini kullanma kısıtının, trivial olmayan build’leri nasıl etkileyeceğinin merak edildiği görüşü.