3 पॉइंट द्वारा GN⁺ 2024-04-03 | 1 टिप्पणियां | WhatsApp पर शेयर करें

Python को Cloudflare Workers में एकीकृत करना: Pyodide और WebAssembly का उपयोग

  • Cloudflare Workers में अब Python का उपयोग किया जा सकता है.
  • JavaScript के अलावा पहले दिए गए अन्य भाषाई समर्थन से अलग, Python implementation को सीधे workerd runtime में एकीकृत किया गया है.
  • Vectorize, Workers AI, R2, Durable Objects जैसी सभी bindings समर्थित हैं.
  • FastAPI, Langchain, Numpy जैसे लोकप्रिय Python packages के कुछ हिस्से import किए जा सकते हैं.
  • अलग build step या external toolchain की जरूरत नहीं है.

WebAssembly में compile करने से भी आगे का काम

  • Cloudflare Workers 2018 से WebAssembly को support कर रहा है.
  • किसी भाषा को सिर्फ WebAssembly या JavaScript में compile कर देना पर्याप्त नहीं है.
  • developers के परिचित package ecosystem का support भी होना चाहिए.

Python Worker का lifecycle

  • Pyodide workerd में built-in है, इसलिए Python code लिखा जा सकता है.
  • Wrangler.toml फ़ाइल के जरिए .py फ़ाइल निर्दिष्ट करके npx wrangler@latest dev चलाने पर runtime अपने आप Pyodide inject कर देता है.

Workers runtime में built-in Python interpreter

  • CPython, Python का reference implementation है, और Pyodide, CPython का WebAssembly पर port किया गया रूप है.
  • Pyodide, Python standard library का अधिकांश हिस्सा देता है और JavaScript API को सीधे call करने के लिए FFI भी देता है.

Pyodide और foreign function interface (FFI) का जादू

  • Pyodide का FFI, Python से JavaScript features तक पहुंच देता है.
  • इसके जरिए FastAPI और Langchain जैसे packages को सीधे इस्तेमाल किया जा सकता है.

Dynamic linking क्यों जरूरी है, static linking क्यों पर्याप्त नहीं

  • कई Python packages native libraries लाने के लिए C FFI का उपयोग करते हैं.
  • Dynamic linking की मदद से Pyodide, native library dependencies वाले कई Python packages को support कर सकता है.

Server और client libraries का समर्थन

  • Python में httpx, urllib3, requests जैसी लोकप्रिय HTTP client libraries हैं, लेकिन Pyodide में वे default रूप से काम नहीं करतीं.
  • Asynchronous client libraries, Fetch API का उपयोग करके requests कर सकती हैं.

Python packages import करना

  • Python Workers, Pyodide द्वारा सीधे उपलब्ध कराए गए Python packages के एक subset का समर्थन करते हैं.
  • बस requirements.txt फ़ाइल में packages जोड़ने होते हैं.

Memory snapshots का उपयोग करके cold start समय कम करना

  • Pyodide को Worker में inject करके Cloudflare पर upload करने की प्रक्रिया में memory snapshots बनाए जाते हैं, जिससे cold start समय घटता है.

Pyodide versions और compatibility dates के लिए future-proofing

  • Compatibility dates और compatibility flags का उपयोग करके नए behavior और संभावित backward-incompatible बदलावों को स्पष्ट रूप से opt-in किया जा सकता है.

Python Workers में bindings कैसे काम करती हैं

  • Pyodide, JavaScript के लिए FFI देता है, जिससे Python में सीधे JavaScript objects, methods, functions आदि का उपयोग किया जा सकता है.

Python Workers के साथ शुरुआत

  • किसी नई programming language के लिए वास्तविक support देने में "hello world" से आगे का बड़ा investment चाहिए.
  • Python, JavaScript के बाद सबसे लोकप्रिय programming language है, और Cloudflare Python package support बढ़ाने और performance सुधारने के लिए लगातार काम कर रहा है.

GN⁺ की राय

  • Cloudflare का Python Workers support, serverless architecture में Python के उपयोग को बढ़ाने वाली एक महत्वपूर्ण प्रगति है. यह Python developers को अधिक flexibility और choice देता है, और JavaScript पर निर्भर हुए बिना cloud-based applications बनाने का अवसर खोलता है.
  • Pyodide के माध्यम से Python का WebAssembly integration, browser और serverless environments में Python code चलाने की नई संभावनाएं प्रस्तुत करता है. इसका Python ecosystem पर बड़ा प्रभाव पड़ सकता है, खासकर data science और machine learning जैसे क्षेत्रों में जहां JavaScript प्रमुख नहीं है, वहां Python के उपयोग को बढ़ावा मिल सकता है.
  • Dynamic linking और memory snapshot तकनीक, initial loading time को कम करती हैं और resources को कुशलता से साझा करने का तरीका देती हैं. यह खास तौर पर बड़े distributed systems में एक महत्वपूर्ण performance improvement है.
  • Compatibility dates और flags के जरिए version management, मौजूदा code की stability बनाए रखते हुए नई features और updates को अपनाने का लचीला तरीका देता है. लंबे समय तक services चलाने वाली कंपनियों के लिए यह एक महत्वपूर्ण पहलू है.
  • Cloudflare के Python Workers support के विस्तार के साथ, Python developers को मौजूदा cloud services के साथ integrate करने या नई services विकसित करने में अधिक विकल्प मिल सकते हैं. यह दिखाता है कि serverless computing के क्षेत्र में Python महत्वपूर्ण भूमिका निभा सकता है.

1 टिप्पणियां

 
GN⁺ 2024-04-03
Hacker News राय
  • Cloudflare Edge पर WebAssembly के जरिए Python चलाने में ज़्यादा रुचि ले रहा है, इस पर खुशी जताते हुए सकारात्मक प्रतिक्रिया।

    • Pyodide का इस्तेमाल करके Python को WebAssembly में compile किया जाता है, उसे Workerd में bundle किया जाता है, और V8 snapshot का उपयोग करके startup time को तेज़ करने की कोशिश की जाती है।
    • Cloudflare Workers पर Python का cold start समय सबसे अच्छे मामले में भी लगभग 1 सेकंड है।
    • यह घोषणा Edge पर Python execution में रुचि को मापने में मदद करती है, लेकिन इसके कुछ नुकसान हैं:
      • यह केवल एक ही Python/Pyodide version तक सीमित है।
      • package resolution workerd पर निर्भर और जटिल है।
      • यह संरचनात्मक रूप से JS/V8 दुनिया पर निर्भर है, जिससे cold start समय घटाना चुनौतीपूर्ण हो सकता है।
    • इन कमियों के बावजूद, इस तरह की कोशिशों का स्वागत है और इससे बनने वाले शानदार apps का इंतज़ार है।
  • एक राय यह है कि Cloudflare hosting और database के लिए शानदार सुविधाएँ देता है, लेकिन developer platform के रूप में खुद को market करने में उसे बड़ी सफलता नहीं मिली है।

    • यह सवाल भी है कि क्या Cloudflare Google Cloud Run जैसी language-agnostic container hosting service देता है।
  • Cloudflare के जरिए JS workers इस्तेमाल करने का अनुभव रहा है, और इसे आसान तथा बहुत तेज़ बताया गया है।

    • अपनी Django app को Cloudflare के D1 database का उपयोग करके port करना चाहते हैं।
  • JS worker के साथ performance comparison मददगार होगा, ऐसी राय।

    • यह भी चिंता है कि कई layers होने की वजह से यह धीमा हो सकता है, इसलिए मोटे तौर पर trade-off जानना चाहेंगे।
  • एक राय यह है कि Pyodide को गंभीर support मिलने के साथ, Python के frontend में JavaScript का असली विकल्प बनने की उम्मीद दिखाई दे रही है।

  • यह सवाल है कि lzma का उपयोग करने वाला demo जानबूझकर था या सिर्फ संयोग।

    • यह हाल की tech news से जुड़ा हुआ है।
  • Cloudflare पर AI से जुड़े workloads चलाने के लिए इसे game changer बताया गया है, और कहा गया है कि इसका लंबे समय से इंतज़ार था।

  • एक राय यह है कि Cloudflare को ऐसे workers लागू करने चाहिए जो केवल JS workers तक सीमित न हों और WASM को first-class citizen की तरह मानें।

    • अभी WASM code, JS context के भीतर चलता है, लेकिन आगे चलकर उम्मीद है कि इसे container के बिना सीधे WASM runtime में deploy किया जाएगा।
  • CF Pages का उपयोग करके static site बनाने में अच्छे नतीजे मिले हैं, और Cloudflare के open source LLM-as-a-service प्रस्ताव से आकर्षण है।

    • यह भी कहा गया कि Python support की कमी ही Cloudflare पर और ज़्यादा चीज़ें build न कर पाने की मुख्य समस्या थी, और इस update को आज़माना चाहेंगे।
  • एक राय यह है कि केवल Pyodide packages का उपयोग करने की सीमा non-trivial builds को कैसे प्रभावित करेगी, यह जानना दिलचस्प है।

    • यह सोचते हुए कि non-pure Python code बहुत है और शायद उसे manually rebuild करना पड़े, उम्मीद जताई गई कि Cloudflare की adoption से और ज़्यादा packages शामिल करने में मदद मिल सकती है।