3 puan yazan GN⁺ 2024-04-03 | 1 yorum | WhatsApp'ta paylaş

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

 
GN⁺ 2024-04-03
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.

    • Python’u WebAssembly’ye derlemek için Pyodide kullanılıyor ve başlangıç süresini V8 snapshot’larıyla hızlandırmak amacıyla workerd içine paketlenmeye çalışılıyor.
    • Python için Cloudflare Workers üzerindeki cold start süresi en iyi durumda yaklaşık 1 saniye.
    • Bu duyuru, Edge üzerinde Python çalıştırmaya olan ilgiyi ölçmeyi sağlıyor ancak bazı dezavantajları var:
      • Yalnızca tek bir Python/Pyodide sürümüyle sınırlı.
      • Paket çözümleme workerd’e bağımlı ve karmaşık.
      • Yapısal olarak JS/V8 dünyasına bağımlı olduğu için cold start süresini azaltmak zor olabilir.
    • Bu dezavantajlara rağmen, bu tür girişimlerin memnuniyetle karşılandığı ve bununla yapılacak etkileyici uygulamaların beklendiği ifade ediliyor.
  • 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’ın Google Cloud Run benzeri, dilden bağımsız bir container hosting hizmeti sunup sunmadığı soruluyor.
  • 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.

    • Kendi Django uygulamasını Cloudflare’ın D1 veritabanını kullanarak taşımak istiyor.
  • JS worker ile performans karşılaştırmasının faydalı olacağı görüşü.

    • Birden fazla katman içerdiği için yavaş olabileceğine dair endişeyle birlikte, kabaca ne tür trade-off’lar olduğunu bilmek istiyor.
  • Pyodide ciddi destek alırken, Python’un frontend’de JavaScript’e gerçek bir alternatif olabileceğine dair umut görüldüğü görüşü.

  • lzma kullanılan demonun kasıtlı mı yoksa sadece tesadüf mü olduğuna dair bir soru var.

    • Bunun yakın dönemdeki teknoloji haberleriyle bağlantılı olduğu belirtiliyor.
  • 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üşü.

    • Şu anda WASM kodu JS context’i içinde çalışıyor, ancak gelecekte container olmadan doğrudan WASM runtime’a dağıtılacağı öngörülüyor.
  • 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.

    • Python desteğinin olmamasının Cloudflare üzerinde daha fazla iş inşa etmemenin başlıca nedeni olduğu, bu güncellemeyi denemek istedikleri söyleniyor.
  • Yalnızca Pyodide paketlerini kullanma kısıtının, trivial olmayan build’leri nasıl etkileyeceğinin merak edildiği görüşü.

    • Çok sayıda saf olmayan Python kodu olduğu için bunları elle yeniden derlemek gerekebileceği düşünülüyor; Cloudflare’ın benimsemesinin daha fazla paketin eklenmesine yardımcı olabileceği umuluyor.