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 د اختیارونو یو آبجکټ.
| Python | TypeScript | ډیفالټ | مانا |
|---|---|---|---|
mode | mode | "ephemeral" | "ephemeral" (په ثانیه) یا "persistent" (د هر پیل شوي ساعت له مخې، ډیسک ساتي) |
tariff | tariff | "small" | micro، small، standard، plus، pro، max |
idle_timeout | idleTimeout | 300 | د لنډمهاله sandbox تر ړنګېدو مخکې د بېکارۍ ثانیې، تر 3600 |
ttl | ttl | — | په ثانیو کې تر ټولو اوږد عمر: لنډمهاله ته تر 86400، دایمي ته تر 2592000 |
env | env | — | د ټولو کمانډونو لپاره د چاپېریال متغیرونه، کوډ شوي ساتل کېږي |
api_key، base_url | apiKey، baseUrl | د چاپېریال متغیرونه | د EQVPS_API_KEY / EQVPS_API_URL ځای نیسي |
timeout | timeoutMs | ۷۰ ثانیې | د هرې غوښتنې د HTTP وخت پوله |
max_retries | maxRetries | 3 | په 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 | څومره وخت یې ونیو |
ok | exit_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 | څه وکړئ |
|---|---|---|---|
AuthenticationError | 401 | unauthenticated | ټوکن وګورئ |
InsufficientBalanceError | 402 | insufficient_balance | بیلانس ډک کړئ |
NotFoundError | 404 | not_found | ناسم id یا فایل نشته |
SandboxPausedError | 409 | sandbox_paused | د بیلانس د ختمېدو له امله درول شوی؛ له ډکولو وروسته روانېږي |
SandboxDeletedError | 410 | sandbox_deleted | د تل لپاره ړنګ شوی |
FileTooLargeError | 413 | file_too_large | لېږدونه تر 5 MB لاندې وساتئ |
ValidationError | 422 | invalid_request | پارامیټرونه سم کړئ |
RateLimitError | 429 | too_many_concurrent، too_many_tasks، rate_limited | انتظار وکړئ او بیا هڅه وکړئ |
BudgetExceededError | 429 | budget_exceeded | د sandbox ورځنۍ یا میاشتنۍ د لګښت پولې ته رسېدلي یاست |
CapacityError | 503 | capacity | لږ وروسته بیا هڅه وکړئ یا کوچنۍ تعرفه وټاکئ |
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 ازموینه ښيي.
تبصرې
لا تبصرې نشته. لومړی اوسئ.