ይህ መመሪያ ከዜሮ ተነስቶ በPython የሚሰራ sandbox ድረስ ያደርስዎታል። የተገለለ የFirecracker microVM ያስነሳሉ፣ በውስጡ ኮድ ያሂዳሉ፣ ጥቅል ይጭናሉ፣ ፋይልን ያስገባሉ እና ያወጣሉ፣ ረጅም ነገርንም በጀርባ ያሂዳሉ። እያንዳንዱ ደረጃ የሚለጥፏቸው ጥቂት መስመሮች ናቸው።
Python 3.8 ወይም አዲስ እና የEQVPS መለያ ያስፈልግዎታል። SDK ምንም ጥገኝነት የለውም።
1. ቶከን ያግኙ
sandboxዎች የሚከፈሉት ከመለያው ቀሪ ሒሳብ ስለሆነ SDK የመለያ ቶከን ያስፈልገዋል። የመለያዎን ማገናኘት ገጽ ቶከኑን የሚያገኙባቸውን ሶስት መንገዶች ያሳያል፦ ዳሽቦርድ፣ API ወይም MCP አገልጋይ። ከዚያ በአካባቢ ተለዋዋጭ ውስጥ ያስቀምጡት፦
export EQVPS_API_KEY="your-token"
ገና ቀሪ ሒሳብ የለዎትም? ችግር የለም። አዲስ መለያ በቂ ቀሪ ሒሳብ ሳይኖረው መጀመሪያ sandbox ሲፈጥር ለ14 ቀናት የሚያገለግል $1 የsandbox ክሬዲት ያገኛል።
2. SDKን ይጫኑ
pip install eqvps
3. sandbox ያስነሱ እና ኮድ ያሂዱ
ይህንን 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)
የsandboxን መለያ (sb_ እና ተጨማሪ 24 ቁምፊዎች)፣ ከዚያም 0 3.12.x ያያሉ። sandbox በአንድ ሰከንድ ገደማ ተነሳ፣ ኮዱን አሄደ፣ እና የwith ብሎኩ ሲያልቅ ተሰረዘ።
ስለ ውጤቱ ማወቅ ያለብዎት፦
- የመውጫ ኮዱ 0 ሲሆን እና ትዕዛዙ የጊዜ ገደቡ ላይ ካልደረሰ
r.oktrue ይሆናል፤ - ዜሮ ያልሆነ የመውጫ ኮድ ልዩ ሁኔታ አይደለም፣ ስለዚህ
r.okን እራስዎ ይፈትሹ፤ stdoutእናstderrእያንዳንዳቸው እስከ 1 MiB የተገደቡ ናቸው፣ ውጤቱ ተቆርጦ እንደሆነr.truncatedይነግርዎታል።
4. ጥቅል ይጫኑ እና የshell ትዕዛዞችን ያሂዱ
በsandbox ውስጥ 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()ን መጠቀም ይችላሉ። ተግባር እስከሚሮጥ ድረስ sandbox በእንቅስቃሴ-አልባነት ምክንያት አይሰረዝም።
ምን ያህል ወጣ
ከላይ ያለው እያንዳንዱ የwith ብሎክ ጥቂት ሰከንዶች ብቻ ቆይቶ በዝቅተኛው 60 ሰከንድ ተከፍሎበታል። በsmall ይህ ለአንድ ብሎክ $0.00055 ነው፣ ስለዚህ አምስቱም ምሳሌዎች በአንድ ላይ ከአንድ ሳንቲም አንድ ሶስተኛ ገደማ ያስከፍላሉ። የሁሉም ታሪፎች ዋጋ፣ ቋሚ ሁነታ እና የወጪ ገደቦች በየsandbox ገደቦች እና ክፍያ ውስጥ ናቸው።
የሆነ ነገር ሲበላሽ
የ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 ምላሾችን እስከ ሶስት ጊዜ በራሱ ደግሞ ይሞክራል። 11ዱም የስህተት ክፍሎች በየSDK ማጣቀሻ ውስጥ ተዘርዝረዋል።
ቀጣይ ደረጃዎች
- ተመሳሳይ ደረጃዎች በJavaScript፦ በ5 ደቂቃ ውስጥ ለsandbox የTypeScript SDK።
- የAI ሞዴል ኮዱን እንዲጽፍ እና እዚህ እንዲያሄደው ያድርጉ፦ በsandbox ውስጥ የመጀመሪያው የወኪል ተግባርዎ።
- ታሪፎች፣ የሙከራ ክሬዲት እና በsandbox ውስጥ ያለው፦ የsandbox ገጽ።
አስተያየቶች
እስካሁን አስተያየቶች የሉም። መጀመሪያ ይሁኑ።