−25%

د Windows پر کلنۍ تادیه، تر ۳۱ اکتوبر. پلانونه وګورئ

EQVPS
پیل وکړئ

د sandbox API لارښود: Python او TypeScript SDK

د EQVPS د sandbox SDK ټول میتودونه په یوه پاڼه کې: پارامیټرونه، ډیفالټ ارزښتونه، راګرځېدونکي ارزښتونه او ټول ۱۱ د تېروتنې ټولګي، په Python او TypeScript کې د یوې بېلګې سره.

وروستۍ کتنه: 2026-10-10 · SDK 0.2.0 (PyPI eqvps، npm @eqvps/sdk)

SDK د sandbox د REST API پر سر یوه نرۍ پوښ دی. تاسو له درې ستونزو ژغوري: غوښتنې په لاس جوړول، کله چې پلیټفارم بوخت وي بیا لېږل یې، او کله چې کوډ استثنا وغورځوي د sandbox ړنګول هېرول. دلته هر څه د دواړو کڅوړو له 0.2.0 نسخې سره سمون لري.

که مو تر اوسه sandbox نه وي جوړ کړی، لومړی د ۵ دقیقو د نښلولو لارښود څخه ټوکن واخلئ. sandbox څه دی او دننه یې څه دي، په sandboxونو کې تشریح شوي.

نصب او تنظیم

pip install eqvps          # Python 3.8+
npm i @eqvps/sdk           # Node.js 18+, Deno, Bun
export EQVPS_API_KEY=...   # your EQVPS account token

په دواړو ژبو کې یو شان پروګرام: sandbox جوړ کړئ، کوډ وچلوئ، ړنګ یې کړئ.

from eqvps import Sandbox

with Sandbox.create(tariff="small") as sb:
    r = sb.run("print(2 + 2)")
    print(r.exit_code, r.stdout)   # 0 4
import { Sandbox } from "@eqvps/sdk";

await Sandbox.with({ tariff: "small" }, async (sb) => {
  const r = await sb.run("print(2 + 2)");
  console.log(r.exit_code, r.stdout); // 0 4
});

د sandbox جوړول او موندل

میتود Sandbox.create(...) یو sandbox پیلوي، معمولاً شاوخوا په یوه ثانیه کې. Python نوم لرونکي ارګومنټونه اخلي، TypeScript د اختیارونو یو آبجکټ.

PythonTypeScriptډیفالټمانا
modemode"ephemeral""ephemeral" (په ثانیه) یا "persistent" (د هر پیل شوي ساعت له مخې، ډیسک ساتي)
tarifftariff"small"micro، small، standard، plus، pro، max
idle_timeoutidleTimeout300د لنډمهاله sandbox تر ړنګېدو مخکې د بېکارۍ ثانیې، تر 3600
ttlttl—په ثانیو کې تر ټولو اوږد عمر: لنډمهاله ته تر 86400، دایمي ته تر 2592000
envenv—د ټولو کمانډونو لپاره د چاپېریال متغیرونه، کوډ شوي ساتل کېږي
api_key، base_urlapiKey، baseUrlد چاپېریال متغیرونهد EQVPS_API_KEY / EQVPS_API_URL ځای نیسي
timeouttimeoutMs۷۰ ثانیېد هرې غوښتنې د HTTP وخت پوله
max_retriesmaxRetries3په 429/503 کې بیا هڅې

میتود Sandbox.connect(id) له یو موجود sandbox سره نښلي، معمولاً هغه دایمي چې پرون مو جوړ کړی. Sandbox.list() د حساب ټول sandboxونه راګرځوي، چلېدونکي او درول شوي.

ځانګړنې: id (sb_ + ۲۴ هېکس توري)، mode، tariff، state (running، starting، paused، pausing، resuming، deleting، deleted)، env_keys / envKeys (یوازې نومونه، ارزښتونه هېڅکله نه راګرځي) او info (خام آبجکټ). refresh() یې بیا بار کوي.

میتود kill() sandbox ړنګوي او بلینګ دروي. د مخکې ړنګ شوي sandbox لپاره یې غږول تېروتنه نه ده.

د کوډ چلول

میتود run(code, language="python", timeout=30) کوډ د stdin له لارې Python 3.12، Node.js 22 یا bash ("python"، "node"، "bash") ته لېږي. میتود exec(command, cwd=None, stdin=None, timeout=30) د شیل کمانډ چلوي: متن له bash -lc څخه تېرېږي، لړلیک پرته له شیل څخه د argv په توګه چلېږي.

دواړه ExecResult راګرځوي:

ساحهمانا
exit_codeد پروسې د وتلو کوډ
stdout، stderrپایله، د هر جریان لپاره تر 1 MiB
timed_outکمانډ خپل وخت پولې ته ورسېد
truncatedپایله پرې شوه
duration_msڅومره وخت یې ونیو
okexit_code == 0 او د وخت پوله نه ده تېره

یو همغږی غږ تر ۵۵ ثانیو پورې چلېږي. دواړه میتودونه یوازې د هماغه غږ لپاره env هم مني؛ دا د جوړونې پر مهال ټاکل شوي ارزښتونه بدلوي.

اوږدې دندې: د شالید دندې

background=True (په TypeScript کې { background: true }) ورکړئ او سمدستي یو Task ترلاسه کوئ. د ۵۵ ثانیو پوله نه لري او د sandbox تر عمر پای پورې چلېدای شي. په هر sandbox کې تر ۸ دندو.

task = sb.exec("cd /root/app && python3 -m pytest -q", background=True)
result = task.wait(on_output=lambda out, err: print(out, end=""))
print(result.state, result.exit_code)   # done 0
const task = await sb.exec("cd /root/app && npm test", { background: true });
const result = await task.wait({ onOutput: (out) => process.stdout.write(out) });
میتودڅه کوي
task.logs()له تېر غږ راهیسې نوی stdout او stderr
task.status()پرته له دې چې پایله ولوستل شي حالت: running، done، failed، killed، timeout
task.wait(timeout, poll_interval=2, on_output)تر پای پورې یې کتنه کوي او TaskResult راګرځوي
task.kill()دنده او پروسې یې دروي
sb.task(id) / sb.tasks()له یوې دندې سره بیا نښلول / د دندو لړلیک

که د wait خپل وخت پای ته ورسېږي، SandboxTimeoutError غورځوي، خو دنده چلېږي. چلېدونکې دنده لنډمهاله sandbox د بېکارۍ له امله له ړنګېدو هم ساتي.

فایلونه او لګښت

میتود upload(path, content, mode=None) په بشپړه لاره کې فایل لیکي او اندازه یې راګرځوي. download(path) بایټونه راګرځوي، download_text(path) / downloadText(path) متن. یو لېږد تر 5 MB محدود دی.

میتود usage() د چلېدو ثانیې، کارول شوې CPU ثانیې، وتونکي بایټونه، د ساعت بیه، billed_usd او estimated_total_usd راګرځوي. tariffs() یو عادي فنکشن دی چې کیلي ته اړتیا نه لري او اوسنۍ بیې او پولې راګرځوي. د بلینګ قواعد په د sandbox پولې او بلینګ کې دي.

تېروتنې

د API هره تېروتنه د EqvpsError فرعي ټولګی دی چې status (HTTP)، code (ثابت متن) او body لري. کله چې سرور یې ولېږي، retry_after / retryAfter ډکېږي.

ټولګیHTTPعام codeڅه وکړئ
AuthenticationError401unauthenticatedټوکن وګورئ
InsufficientBalanceError402insufficient_balanceبیلانس ډک کړئ
NotFoundError404not_foundناسم id یا فایل نشته
SandboxPausedError409sandbox_pausedد بیلانس د ختمېدو له امله درول شوی؛ له ډکولو وروسته روانېږي
SandboxDeletedError410sandbox_deletedد تل لپاره ړنګ شوی
FileTooLargeError413file_too_largeلېږدونه تر 5 MB لاندې وساتئ
ValidationError422invalid_requestپارامیټرونه سم کړئ
RateLimitError429too_many_concurrent، too_many_tasks، rate_limitedانتظار وکړئ او بیا هڅه وکړئ
BudgetExceededError429budget_exceededد sandbox ورځنۍ یا میاشتنۍ د لګښت پولې ته رسېدلي یاست
CapacityError503capacityلږ وروسته بیا هڅه وکړئ یا کوچنۍ تعرفه وټاکئ
SandboxTimeoutError—request_timeout، wait_timeoutد HTTP غوښتنې (یا wait) وخت پای ته ورسېد، نه د کمانډ

ډېری 429 له دوو پولو راځي: یو حساب په یو وخت دوه کمانډونه چلوي او تر ۲۰ sandboxونو ساتلی شي. کله چې سرور ووايي څومره انتظار وکړئ، SDK بیا هڅه کوي؛ له درې هڅو وروسته استثنا درته رسېږي.

کله SDK ته اړتیا نشته

هره ژبه چې HTTP پیرودونکی لري کولی شي API مستقیم وغږوي؛ پای ټکي د OpenAPI په فایل کې په https://eqvps.com/openapi.json کې دي. په Claude، Cursor یا نورو MCP پیرودونکو کې اجنټانو ته کوډ هېڅ اړتیا نه لري: د MCP سرور هماغه د sandbox وسیلې لري. او که یوازې غواړئ چلېدل یې ووینئ، د sandbox پاڼه تعرفې او د نوو حسابونو لپاره د $1 ازموینه ښيي.

عامې پوښتنې

SDK د Python او Node.js کومې نسخې ملاتړ کوي؟

د Python کڅوړه Python 3.8 یا نوې ته اړتیا لري او هېڅ تړاو نه لري. د TypeScript کڅوړه هم تړاو نه لري؛ په Node.js 18+، Deno، Bun او هغو براوزرونو کې چلېږي چې fetch لري.

SDK زما API کیلي له کومه اخلي؟

د api_key / apiKey ارګومنټ یا د EQVPS_API_KEY چاپېریال متغیر څخه. کیلي د EQVPS حساب یو عادي ټوکن دی. EQVPS_API_URL د API پته بدلوي؛ یوازې د ازموینې لپاره ورته اړتیا ده.

ایا SDK ناکامې غوښتنې بیا لېږي؟

کله چې سرور Retry-After ولېږي، 429 او 503 تر ۳ ځلو بیا لېږي او هر ځل تر ۳۰ ثانیو ډېر انتظار نه کوي. دا حالتونه وايي چې غوښتنه د هر څه له چلېدو مخکې رد شوې، نو د run او exec بیا لېږل خوندي دي. د شبکې تېروتنې یوازې د GET لپاره بیا هڅه کېږي؛ run، exec او upload هېڅکله دوه ځله نه لېږل کېږي.

ایا غیر صفري د وتلو کوډ استثنا ده؟

نه. run او exec داسې پایله راګرځوي چې exit_code، stdout او stderr لري. result.ok یا result.exit_code وګورئ. استثناوې یوازې د API په تېروتنو کې رامنځته کېږي، لکه تش بیلانس یا ناسم ټوکن.

که کوډ مې ودرېږي، څنګه ډاډ ترلاسه کړم چې sandbox ړنګ شي؟

د ساحې لرونکې بڼه وکاروئ: په Python کې with Sandbox.create() as sb، په TypeScript کې Sandbox.with(options, fn) یا await using. sandbox د بلاک په پای کې ړنګېږي، حتی له استثنا وروسته.

تبصرې

لا تبصرې نشته. لومړی اوسئ.

یوه تبصره پریږدئ

تبصرې د ښکاره کیدو مخکې اعتدال کیږي.