−25%

በWindows ዓመታዊ ክፍያ ላይ፣ እስከ ኦክቶበር 31። ዕቅዶችን ይመልከቱ

EQVPS
ጀምር

የsandbox API ማጣቀሻ፦ Python እና TypeScript SDK

የEQVPS sandbox SDK ሁሉም ዘዴዎች በአንድ ገጽ፦ መለኪያዎች፣ ነባሪ እሴቶች፣ የሚመለሱ እሴቶች እና ሁሉም 11 የስህተት ክፍሎች፣ በPython እና TypeScript ተመሳሳይ ምሳሌ።

መጨረሻ የተረጋገጠው: 2026-10-10 · SDK 0.2.0 (PyPI eqvps፣ npm @eqvps/sdk)

SDK በsandbox REST API ላይ ያለ ቀጭን መጠቅለያ ነው። ከሶስት ነገሮች ያድንዎታል፦ ጥያቄዎችን በእጅ መገንባት፣ መድረኩ ሲጨናነቅ ደግሞ መሞከር፣ እና ኮድዎ ልዩ ሁኔታ ሲጥል sandboxን መሰረዝ መርሳት። እዚህ ያለው ሁሉ ከሁለቱም ጥቅሎች ስሪት 0.2.0 ጋር ይዛመዳል።

sandbox ፈጥረው የማያውቁ ከሆነ፣ የ5 ደቂቃ የግንኙነት መመሪያ መጀመሪያ ቶከን ይሰጥዎታል። 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ን ይተካሉ
timeouttimeoutMs70 ሰለእያንዳንዱ ጥያቄ የHTTP የጊዜ ገደብ
max_retriesmaxRetries3በ429/503 ላይ ድጋሚ ሙከራዎች

Sandbox.connect(id) ከነባር sandbox ጋር ይገናኛል፣ ብዙውን ጊዜ ትናንት የፈጠሩት ቋሚ sandbox። Sandbox.list() በመለያው ላይ ያሉትን ሁሉንም sandboxዎች ይመልሳል፣ የሚሠሩትንም የቆሙትንም።

ባህሪያት፦ id (sb_ + 24 ሄክሳዴሲማል ቁምፊዎች)፣ 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) የshell ትዕዛዝ ያሂዳል፦ ሕብረቁምፊ በbash -lc በኩል ያልፋል፣ ዝርዝር ያለ shell እንደ argv ይፈጸማል።

ሁለቱም ExecResult ይመልሳሉ፦

መስክትርጉም
exit_codeየሂደቱ የመውጫ ኮድ
stdout፣ stderrውጤት፣ በእያንዳንዱ ፍሰት እስከ 1 MiB
timed_outትዕዛዙ የጊዜ ገደቡ ላይ ደርሷል
truncatedውጤቱ ተቆርጧል
duration_msምን ያህል ጊዜ እንደሮጠ
okexit_code == 0 እና የጊዜ ገደቡ አልተሻገረም

የተመሳሰለ ጥሪ ቢበዛ 55 ሰከንድ ሊሮጥ ይችላል። ሁለቱም ዘዴዎች ለዚያ አንድ ጥሪ ብቻ env ይቀበላሉ፤ ይህ በፍጠራ ጊዜ የተቀመጡትን እሴቶች ይተካል።

ረጅም ስራዎች፦ የጀርባ ተግባራት

background=True (በTypeScript { background: true }) ይስጡ እና ወዲያውኑ Task ያገኛሉ። የ55 ሰከንድ ገደብ የለውም እና የsandbox ዕድሜ እስኪያልቅ ድረስ ሊሮጥ ይችላል። በእያንዳንዱ sandbox እስከ 8 ተግባራት።

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 ስህተት status (HTTP)፣ code (የተረጋጋ ሕብረቁምፊ) እና body ያለው የEqvpsError ንዑስ ክፍል ነው። አገልጋዩ ሲልከው 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ዎች የሚያስከትሉት ሁለት ገደቦች ናቸው፦ አንድ መለያ በአንድ ጊዜ 2 ትዕዛዞችን ያሂዳል እና እስከ 20 sandboxዎችን ይይዛል። አገልጋዩ ምን ያህል መጠበቅ እንዳለበት ሲናገር SDK እነዚህን ደግሞ ይሞክራል፤ ከሶስት ሙከራዎች በኋላ ልዩ ሁኔታው ይደርስዎታል።

SDK መቼ አያስፈልግም

HTTP ደንበኛ ያለው ማንኛውም ቋንቋ APIን በቀጥታ መጥራት ይችላል፤ endpointዎቹ በhttps://eqvps.com/openapi.json ባለው የOpenAPI ፋይል ውስጥ ናቸው። በ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ን እስከ 3 ጊዜ ደግሞ ይሞክራል፣ በእያንዳንዱ ጊዜ ቢበዛ 30 ሰከንድ ይጠብቃል። እነዚህ ሁኔታዎች ጥያቄው ምንም ነገር ከመሮጡ በፊት ውድቅ መደረጉን ያሳያሉ፣ ስለዚህ run እና execን ደግሞ መሞከር ደህንነቱ የተጠበቀ ነው። የአውታረ መረብ ስህተቶች የሚደገሙት ለGET ጥያቄዎች ብቻ ነው፤ run፣ exec እና upload በፍጹም ሁለት ጊዜ አይላኩም።

ዜሮ ያልሆነ የመውጫ ኮድ ልዩ ሁኔታ (exception) ነው?

አይደለም። 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 ብሎኩ ሲያልቅ ይሰረዛል፣ ከልዩ ሁኔታ በኋላም ቢሆን።

አስተያየቶች

እስካሁን አስተያየቶች የሉም። መጀመሪያ ይሁኑ።

አስተያየት ይተዉ

አስተያየቶች ከመታየታቸው በፊት ይጣራሉ።