यह गाइड आपको शून्य से 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.oktrue होता है; - शून्य से अलग एग्ज़िट कोड 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 संदर्भ में हैं।
आगे क्या
- यही स्टेप JavaScript में: 5 मिनट में सैंडबॉक्स के लिए TypeScript SDK।
- AI मॉडल को कोड लिखने दें और यहाँ चलाएँ: सैंडबॉक्स में आपका पहला एजेंट टास्क।
- टैरिफ़, ट्रायल क्रेडिट और सैंडबॉक्स के अंदर क्या है: सैंडबॉक्स पेज।
टिप्पणियाँ
अभी तक कोई टिप्पणी नहीं। पहले बनें।