یہ گائیڈ آپ کو صفر سے 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 کی غلطیاں ایسی exceptions ہیں جنہیں آپ پکڑ سکتے ہیں:
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 ماڈل کو کوڈ لکھنے دیں اور یہاں چلائیں: سینڈباکس میں آپ کا پہلا ایجنٹ ٹاسک۔
- ٹیرف، ٹرائل کریڈٹ اور سینڈباکس کے اندر کیا ہے: سینڈباکس صفحہ۔
تبصرے
ابھی کوئی تبصرہ نہیں۔ پہلے بنیں۔