دا لارښود تاسو له صفر څخه په Python کې یو چلېدونکي sandbox ته رسوي. تاسو به یو جلا Firecracker microVM چالان کړئ، په هغه کې کوډ وچلوئ، یوه کڅوړه نصب کړئ، یو فایل ورته ننباسئ او بیا یې راوباسئ، او یو اوږد کار به په شالید کې وچلوئ. هر ګام یو څو کرښې دي چې یوازې یې پېسټ کوئ.
تاسو Python 3.8 یا نوي نسخې او یو EQVPS حساب ته اړتیا لرئ. SDK هېڅ تړاو نه لري.
۱. ټوکن واخلئ
د sandboxونو پیسې د حساب له بیلانس څخه کمېږي، نو SDK د حساب ټوکن ته اړتیا لري. د حساب نښلول پاڼه یې د ترلاسه کولو درې لارې ښيي: ډشبورډ، API یا MCP سرور. بیا یې د چاپېریال په متغیرونو کې کېږدئ:
export EQVPS_API_KEY="your-token"
تر اوسه بیلانس نه لرئ؟ کومه ستونزه نشته. کله چې نوی حساب لومړی ځل پرته له کافي بیلانس sandbox جوړوي، د sandbox لپاره $1 کریډیټ ترلاسه کوي چې ۱۴ ورځې اعتبار لري.
۲. SDK نصب کړئ
pip install eqvps
۳. 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_ او نور ۲۴ توري) او بیا 0 3.12.x وګورئ. sandbox شاوخوا په یوه ثانیه کې چالان شو، کوډ یې وچلاوه، او کله چې د with بلاک پای ته ورسېد ړنګ شو.
د پایلې په اړه د پوهېدو وړ خبرې:
- کله چې د وتلو کوډ 0 وي او کمانډ خپلې وخت پولې ته نه وي رسېدلی،
r.oktrue وي؛ - غیر صفري د وتلو کوډ استثنا نه ده، نو
r.okپخپله وګورئ؛ stdoutاوstderrهر یو تر 1 MiB محدود دي، اوr.truncatedدرته وايي چې پایله پرې شوې که نه.
۴. کڅوړه نصب کړئ او د shell کمانډونه وچلوئ
د sandbox دننه تاسو د یو کوچني Linux سیسټم 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
لارې باید بشپړې (absolute) وي. یو لېږد تر 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(). تر هغه چې دنده چلېږي، sandbox د بېکارۍ له امله نه ړنګېږي.
دې څومره لګښت درلود
پورته هر with بلاک یو څو ثانیې ژوندی و او د لږ تر لږه ۶۰ ثانیو له مخې بل شو. په 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 ځوابونه تر درې ځلو بیا هڅه کوي. ټول ۱۱ د تېروتنې ټولګي په د SDK لارښود کې دي.
راتلونکي ګامونه
- همدا ګامونه په JavaScript کې: په ۵ دقیقو کې د sandbox لپاره TypeScript SDK.
- پرېږدئ چې د مصنوعي ځيرکتيا ماډل کوډ ولیکي او دلته یې وچلوي: په sandbox کې ستاسو د اجنټ لومړۍ دنده.
- تعرفې، د ازموینې کریډیټ او د sandbox دننه څه دي: د sandbox پاڼه.
تبصرې
لا تبصرې نشته. لومړی اوسئ.