−25%

روی پرداخت سالانه Windows، تا ۳۱ اکتبر. مشاهده پلن‌ها

EQVPS
شروع کنید

SDK پایتون برای سندباکس در ۵ دقیقه: از pip install eqvps تا اولین اجرا

SDK پایتون EQVPS را نصب کنید، یک سندباکس Firecracker بالا بیاورید، کد اجرا کنید، بسته نصب کنید، فایل جابه‌جا کنید و یک کار طولانی را در پس‌زمینه اجرا کنید. شش گام با همهٔ دستورها، و کل هزینه کمتر از یک سنت.

این راهنما شما را از صفر به یک سندباکس کارا با پایتون می‌رساند. یک microVM جداشدهٔ Firecracker بالا می‌آورید، در آن کد اجرا می‌کنید، یک بسته نصب می‌کنید، فایلی را داخل و خارج می‌کنید و یک کار طولانی را در پس‌زمینه می‌گذارید. هر گام چند خط است که فقط باید جای‌گذاری کنید.

به پایتون ۳٫۸ یا جدیدتر و یک حساب EQVPS نیاز دارید. SDK هیچ وابستگی‌ای ندارد.

۱. توکن بگیرید

هزینهٔ سندباکس از موجودی حساب کم می‌شود، پس SDK به توکن حساب نیاز دارد. صفحهٔ اتصال حساب سه راه گرفتن آن را نشان می‌دهد: داشبورد، API یا سرور MCP. بعد آن را در متغیرهای محیطی بگذارید:

export EQVPS_API_KEY="your-token"

هنوز موجودی ندارید؟ مشکلی نیست. حساب تازه وقتی برای اولین بار بدون موجودی کافی سندباکس می‌سازد، ۱ دلار اعتبار سندباکس با اعتبار ۱۴ روزه می‌گیرد.

۲. SDK را نصب کنید

pip install eqvps

۳. سندباکس را بالا بیاورید و کد اجرا کنید

این را با نام 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)

شناسهٔ سندباکس (sb_ و ۲۴ نویسهٔ دیگر) و سپس 0 3.12.x را می‌بینید. سندباکس در حدود یک ثانیه بالا آمد، کد را اجرا کرد و با پایان بلوک with حذف شد.

نکته‌هایی دربارهٔ نتیجه:

  • وقتی کد خروج ۰ باشد و دستور به مهلتش نرسیده باشد، r.ok برابر true است؛
  • کد خروج غیر صفر استثنا نیست، پس r.ok را خودتان بررسی کنید؛
  • هر کدام از stdout و stderr تا 1 MiB محدودند و r.truncated می‌گوید خروجی بریده شده یا نه.

۴. بسته نصب کنید و دستور shell اجرا کنید

داخل سندباکس، شما root یک سیستم کوچک لینوکس با Python، Node.js، git و curl هستید. 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

مهلت پیش‌فرض ۳۰ ثانیه است و یک فراخوانی هم‌زمان حداکثر ۵۵ ثانیه طول می‌کشد. نصب‌های بزرگ را در یک کار پس‌زمینه بگذارید (گام ۶).

۵. فایل را داخل و خارج کنید

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

مسیرها باید مطلق باشند. هر انتقال حداکثر 5 MB است؛ download بایت برمی‌گرداند و download_text رشته.

۶. کار طولانی را در پس‌زمینه اجرا کنید

background=True را بدهید تا به‌جای انتظار، فوراً یک کار بگیرید. این کار محدودیت ۵۵ ثانیه ندارد:

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() هر ۲ ثانیه وضعیت را می‌پرسد و خروجی تازه را همین که برسد چاپ می‌کند. می‌توانید خودتان task.logs() را صدا بزنید یا با task.kill() کار را متوقف کنید. تا وقتی کاری در حال اجراست، سندباکس به دلیل بیکاری حذف نمی‌شود.

چقدر هزینه شد

هر بلوک with بالا چند ثانیه زنده بود و با حداقل ۶۰ ثانیه حساب شد. روی small این یعنی 0.00055 دلار برای هر بلوک، پس هر پنج مثال روی هم حدود یک‌سوم سنت می‌شود. قیمت همهٔ تعرفه‌ها، حالت ماندگار و سقف هزینه در محدودیت‌ها و صورتحساب سندباکس آمده است.

وقتی چیزی خراب شد

خطاهای API استثناهایی هستند که می‌توانید بگیرید:

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 را تا سه بار دوباره امتحان می‌کند. هر ۱۱ کلاس خطا در مرجع SDK فهرست شده‌اند.

گام‌های بعدی

پرسش‌های متداول

برای امتحان کردن کارت بانکی لازم است؟

نه. حساب تازه وقتی برای اولین بار بدون موجودی کافی سندباکس می‌سازد، ۱ دلار اعتبار سندباکس می‌گیرد. کل این راهنما خیلی کمتر از یک سنت از آن مصرف می‌کند. بعد از آن موجودی را با رمزارز شارژ می‌کنید.

می‌توانم داخل سندباکس با pip بسته نصب کنم؟

بله. سندباکس‌ها به اینترنت بیرونی دسترسی دارند و pip بدون virtualenv روی سیستم نصب می‌کند. بسته‌های سنگین مثل torch دیسک و حافظهٔ بیشتری می‌خواهند، پس تعرفهٔ plus یا بزرگ‌تر را بگیرید.

چرا دستورم بعد از ۳۰ ثانیه قطع می‌شود؟

مهلت پیش‌فرض run و exec سی ثانیه است و سقف یک فراخوانی هم‌زمان ۵۵ ثانیه. هر کار طولانی‌تر را با background=True اجرا کنید که این محدودیت را ندارد.

اگر اسکریپتم از کار بیفتد، سندباکس حذف می‌شود؟

با بلوک with بله: سندباکس هنگام پایان بلوک حذف می‌شود، حتی بعد از استثنا. بدون آن، سندباکس موقت بعد از ۵ دقیقه بیکاری حذف می‌شود و هزینهٔ همان دقیقه‌ها را هم می‌پردازید.

نظرات

هنوز نظری نیست. اولین نفر باشید.

یک نظر بگذارید

نظرات پیش از نمایش بررسی می‌شوند.