−25%

Windows के सालाना भुगतान पर, 31 अक्टूबर तक। प्लान देखें

EQVPS
शुरू करें

5 मिनट में सैंडबॉक्स के लिए Python SDK: pip install eqvps से पहले रन तक

EQVPS का Python SDK इंस्टॉल करें, Firecracker सैंडबॉक्स चालू करें, कोड चलाएँ, पैकेज इंस्टॉल करें, फ़ाइलें भेजें-लाएँ और लंबा काम बैकग्राउंड में चलाएँ। सभी कमांड के साथ छह स्टेप, और पूरा खर्च एक सेंट से भी कम।

यह गाइड आपको शून्य से Python में चलते सैंडबॉक्स तक ले जाती है। आप एक अलग-थलग Firecracker microVM चालू करेंगे, उसमें कोड चलाएँगे, एक पैकेज इंस्टॉल करेंगे, एक फ़ाइल अंदर-बाहर भेजेंगे और कोई लंबा काम बैकग्राउंड में चलाएँगे। हर स्टेप कुछ लाइनें हैं जिन्हें बस पेस्ट करना है।

आपको Python 3.8 या नया वर्ज़न और एक EQVPS अकाउंट चाहिए। SDK की कोई डिपेंडेंसी नहीं है।

1. टोकन लें

सैंडबॉक्स का पैसा अकाउंट बैलेंस से कटता है, इसलिए SDK को अकाउंट टोकन चाहिए। अकाउंट जोड़ना पेज पर इसे पाने के तीन तरीके हैं: डैशबोर्ड, API या MCP सर्वर। फिर इसे एनवायरनमेंट में रखें:

export EQVPS_API_KEY="your-token"

अभी बैलेंस नहीं है? कोई बात नहीं। नया अकाउंट जब पहली बार पर्याप्त बैलेंस के बिना सैंडबॉक्स बनाता है, तो उसे 14 दिन के लिए मान्य $1 सैंडबॉक्स क्रेडिट मिलता है।

2. SDK इंस्टॉल करें

pip install eqvps

3. सैंडबॉक्स चालू करें और कोड चलाएँ

इसे hello.py नाम से सेव करें और चलाएँ:

from eqvps import Sandbox

with Sandbox.create(tariff="small") as sb:
    print(sb.id)
    r = sb.run("import platform; print(platform.python_version())")
    print(r.exit_code, r.stdout)

आपको सैंडबॉक्स की id (sb_ और 24 और अक्षर) दिखेगी, फिर 0 3.12.x। सैंडबॉक्स लगभग एक सेकंड में चालू हुआ, कोड चलाया और with ब्लॉक खत्म होते ही हट गया।

नतीजे के बारे में जानने लायक बातें:

  • एग्ज़िट कोड 0 हो और कमांड टाइमआउट तक न पहुँची हो, तब r.ok true होता है;
  • शून्य से अलग एग्ज़िट कोड exception नहीं है, इसलिए r.ok खुद जाँचें;
  • stdout और stderr हर एक 1 MiB तक सीमित हैं, और आउटपुट कटा है या नहीं, यह r.truncated बताता है।

4. पैकेज इंस्टॉल करें और shell कमांड चलाएँ

सैंडबॉक्स के अंदर आप Python, Node.js, git और curl वाले एक छोटे Linux सिस्टम के root हैं। exec कोई भी shell कमांड चलाता है:

from eqvps import Sandbox

with Sandbox.create(tariff="small") as sb:
    sb.exec("pip install --quiet requests", timeout=55)
    r = sb.run("import requests; print(requests.get('https://example.com').status_code)")
    print(r.stdout)   # 200

डिफ़ॉल्ट टाइमआउट 30 सेकंड है, और एक सिंक्रोनस कॉल ज़्यादा से ज़्यादा 55 सेकंड चल सकती है। बड़े इंस्टॉलेशन बैकग्राउंड टास्क में चलाएँ (स्टेप 6)।

5. फ़ाइलें अंदर-बाहर भेजें

from eqvps import Sandbox

with Sandbox.create() as sb:
    sb.upload("/root/data.csv", "a,b\n1,2\n3,4\n")
    sb.run("""
import csv
rows = list(csv.DictReader(open('/root/data.csv')))
open('/root/sum.txt', 'w').write(str(sum(int(r['b']) for r in rows)))
""")
    print(sb.download_text("/root/sum.txt"))   # 6

पाथ पूरे (absolute) होने चाहिए। एक ट्रांसफ़र 5 MB तक सीमित है; download बाइट लौटाता है, download_text स्ट्रिंग।

6. लंबा काम बैकग्राउंड में चलाएँ

background=True दें, तो इंतज़ार की जगह तुरंत एक टास्क मिलता है। इसमें 55 सेकंड की सीमा नहीं है:

from eqvps import Sandbox

with Sandbox.create(tariff="standard") as sb:
    task = sb.exec("for i in 1 2 3 4 5; do echo step $i; sleep 20; done", background=True)
    result = task.wait(on_output=lambda out, err: print(out, end=""))
    print(result.state, result.exit_code)   # done 0

task.wait() हर 2 सेकंड में जाँचता है और नया आउटपुट आते ही दिखा देता है। आप खुद भी task.logs() बुला सकते हैं, या रोकने के लिए task.kill()। जब तक टास्क चल रहा है, सैंडबॉक्स निष्क्रियता की वजह से नहीं हटता।

इसमें कितना खर्च हुआ

ऊपर का हर with ब्लॉक कुछ सेकंड चला और न्यूनतम 60 सेकंड के हिसाब से बिल हुआ। small पर यह $0.00055 प्रति ब्लॉक है, यानी पाँचों उदाहरण मिलाकर लगभग एक-तिहाई सेंट। सभी टैरिफ़ की कीमतें, स्थायी मोड और खर्च सीमाएँ सैंडबॉक्स की सीमाएँ और बिलिंग में हैं।

जब कुछ गड़बड़ हो

API की त्रुटियाँ ऐसे exception हैं जिन्हें आप पकड़ सकते हैं:

from eqvps import Sandbox, InsufficientBalanceError, RateLimitError

try:
    with Sandbox.create() as sb:
        print(sb.run("print(1)").stdout)
except InsufficientBalanceError:
    print("Top up the balance")
except RateLimitError as e:
    print("Too many at once, retry in", e.retry_after)

जब सर्वर बताता है कि कितना इंतज़ार करना है, तो SDK 429 और 503 जवाबों को अपने आप तीन बार तक दोबारा आज़माता है। सभी 11 त्रुटि क्लास SDK संदर्भ में हैं।

आगे क्या

सामान्य प्रश्न

आज़माने के लिए क्या कार्ड चाहिए?

नहीं। नया अकाउंट जब पहली बार पर्याप्त बैलेंस के बिना सैंडबॉक्स बनाता है, तो उसे सैंडबॉक्स के लिए $1 क्रेडिट मिलता है। यह पूरी गाइड उसमें से एक सेंट से बहुत कम खर्च करती है। इसके बाद आप क्रिप्टो से बैलेंस भरते हैं।

क्या सैंडबॉक्स के अंदर pip से पैकेज इंस्टॉल कर सकते हैं?

हाँ। सैंडबॉक्स बाहर इंटरनेट से जुड़ सकते हैं, और pip बिना virtualenv के सिस्टम में इंस्टॉल करता है। torch जैसे भारी पैकेज को ज़्यादा डिस्क और मेमोरी चाहिए, इसलिए plus या उससे बड़ा टैरिफ़ लें।

मेरी कमांड 30 सेकंड बाद क्यों रुक जाती है?

run और exec का डिफ़ॉल्ट टाइमआउट 30 सेकंड है, और सिंक्रोनस कॉल की अधिकतम सीमा 55 सेकंड है। इससे लंबा कोई भी काम background=True के साथ चलाएँ, जिसमें यह सीमा नहीं है।

अगर मेरी स्क्रिप्ट क्रैश हो जाए तो क्या सैंडबॉक्स हट जाता है?

with ब्लॉक के साथ हाँ: ब्लॉक खत्म होते ही सैंडबॉक्स हट जाता है, exception के बाद भी। इसके बिना अस्थायी सैंडबॉक्स 5 मिनट की निष्क्रियता के बाद हटता है, और उन मिनटों का भी पैसा लगता है।

टिप्पणियाँ

अभी तक कोई टिप्पणी नहीं। पहले बनें।

एक टिप्पणी छोड़ें

टिप्पणियाँ दिखने से पहले मॉडरेट की जाती हैं।