−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 کی غلطیاں ایسی 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 حوالہ میں ہیں۔

آگے کیا

عمومی سوالات

آزمانے کے لیے کیا کارڈ چاہیے؟

نہیں۔ نیا اکاؤنٹ جب پہلی بار کافی بیلنس کے بغیر سینڈباکس بناتا ہے تو اسے سینڈباکس کے لیے $1 کریڈٹ ملتا ہے۔ یہ پوری گائیڈ اس میں سے ایک سینٹ سے بہت کم خرچ کرتی ہے۔ اس کے بعد آپ کرپٹو سے بیلنس بھرتے ہیں۔

کیا سینڈباکس کے اندر pip سے پیکیج انسٹال کر سکتے ہیں؟

جی ہاں۔ سینڈباکس باہر انٹرنیٹ سے جڑ سکتے ہیں اور pip بغیر virtualenv کے سسٹم میں انسٹال کرتا ہے۔ torch جیسے بھاری پیکیج کو زیادہ ڈسک اور میموری چاہیے، اس لیے plus یا اس سے بڑا ٹیرف لیں۔

میری کمانڈ 30 سیکنڈ بعد کیوں رک جاتی ہے؟

run اور exec کا ڈیفالٹ ٹائم آؤٹ 30 سیکنڈ ہے، اور ہم وقت (synchronous) کال کی زیادہ سے زیادہ حد 55 سیکنڈ ہے۔ اس سے لمبا کوئی بھی کام background=True کے ساتھ چلائیں، جس میں یہ حد نہیں۔

اگر میری اسکرپٹ کریش ہو جائے تو کیا سینڈباکس حذف ہو جاتا ہے؟

with بلاک کے ساتھ ہاں: بلاک ختم ہوتے ہی سینڈباکس حذف ہو جاتا ہے، exception کے بعد بھی۔ اس کے بغیر عارضی سینڈباکس 5 منٹ کی غیرفعالیت کے بعد حذف ہوتا ہے، اور ان منٹوں کا بھی بل آتا ہے۔

تبصرے

ابھی کوئی تبصرہ نہیں۔ پہلے بنیں۔

ایک تبصرہ چھوڑیں

تبصرے ظاہر ہونے سے پہلے moderate کیے جاتے ہیں۔