Ghidul ăsta te duce de la zero la un sandbox funcțional în Python. Vei porni o microVM Firecracker izolată, vei rula cod în ea, vei instala un pachet, vei muta un fișier înăuntru și înapoi și vei rula ceva lung în fundal. Fiecare pas e câteva rânduri pe care le poți lipi.
Îți trebuie Python 3.8 sau mai nou și un cont EQVPS. SDK-ul nu are dependențe.
1. Obține un token
Sandboxurile se plătesc din soldul contului, deci SDK-ul are nevoie de un token de cont. Conectarea contului arată cele trei căi de a obține unul: dashboardul, API-ul sau serverul MCP. Apoi pune-l în mediu:
export EQVPS_API_KEY="your-token"
N-ai încă sold? Nicio problemă. Prima dată când un cont nou creează un sandbox fără sold suficient, primește $1 credit de sandbox, valabil 14 zile.
2. Instalează SDK-ul
pip install eqvps
3. Pornește un sandbox și rulează cod
Salvează asta ca hello.py și rulează-l:
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)
Ar trebui să vezi id-ul sandboxului (sb_ și încă 24 de caractere), apoi 0 3.12.x. Sandboxul a pornit în aproximativ o secundă, a rulat codul și a fost șters când s-a terminat blocul with.
Câteva lucruri bune de știut despre rezultat:
r.oke true când codul de ieșire e 0 și comanda nu a depășit timpul;- un cod de ieșire diferit de zero nu e o excepție, deci verifică singur
r.ok; stdoutșistderrsunt limitate la câte 1 MiB, iarr.truncatedîți spune dacă ieșirea a fost tăiată.
4. Instalează un pachet și rulează comenzi shell
În sandbox ești root pe un sistem Linux mic, cu Python, Node.js, git și curl. exec rulează orice comandă 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
Timeoutul implicit e 30 de secunde, iar cel mai mult poate dura un apel sincron 55. Instalările mari își au locul într-o sarcină de fundal (pasul 6).
5. Mută fișiere înăuntru și înapoi
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
Căile trebuie să fie absolute. Un transfer e limitat la 5 MB; download returnează bytes, download_text un șir.
6. Rulează o sarcină lungă în fundal
Dă background=True și primești o sarcină în loc să aștepți. Nu are limita de 55 de secunde:
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() verifică la fiecare 2 secunde și afișează ieșirea nouă pe măsură ce apare. Poți apela și singur task.logs() sau task.kill() ca s-o oprești. Cât rulează o sarcină, sandboxul nu e șters pentru inactivitate.
Cât a costat
Fiecare bloc with de mai sus a trăit câteva secunde și a fost facturat la minimul de 60 de secunde. Pe small asta înseamnă $0.00055 per bloc, deci toate cele cinci exemple au costat împreună în jur de o treime de cent. Prețurile pentru fiecare tarif, modul persistent și plafoanele de cheltuieli sunt în limitele și facturarea sandboxurilor.
Când ceva eșuează
Erorile de la API sunt excepții pe care le poți prinde:
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-ul reîncearcă deja răspunsurile 429 și 503 de până la trei ori, când serverul spune cât să aștepte. Toate cele 11 clase de erori sunt listate în referința SDK.
Pașii următori
- Aceiași pași în JavaScript: SDK de sandbox TypeScript în 5 minute.
- Lasă un model AI să scrie codul și să-l ruleze aici: prima ta sarcină de agent într-un sandbox.
- Tarifele, proba și ce e într-un sandbox: pagina sandboxurilor.
Comentarii
Încă nu există comentarii. Fii primul.