Αυτός ο οδηγός σας πάει από το μηδέν σε ένα sandbox που δουλεύει σε Python. Θα ξεκινήσετε ένα απομονωμένο microVM Firecracker, θα εκτελέσετε κώδικα μέσα του, θα εγκαταστήσετε ένα πακέτο, θα βάλετε και θα βγάλετε ένα αρχείο και θα τρέξετε κάτι μεγάλο στο παρασκήνιο. Κάθε βήμα είναι λίγες γραμμές για επικόλληση.
Χρειάζεστε Python 3.8 ή νεότερη και λογαριασμό EQVPS. Το SDK δεν έχει εξαρτήσεις.
1. Αποκτήστε token
Τα sandboxes πληρώνονται από το υπόλοιπο του λογαριασμού, οπότε το SDK χρειάζεται token λογαριασμού. Η σελίδα σύνδεση λογαριασμού δείχνει τους τρεις τρόπους να το αποκτήσετε: τον πίνακα ελέγχου, το API ή τον server MCP. Μετά βάλτε το στο περιβάλλον:
export EQVPS_API_KEY="your-token"
Δεν έχετε ακόμη υπόλοιπο; Κανένα πρόβλημα. Την πρώτη φορά που ένας νέος λογαριασμός δημιουργεί sandbox χωρίς αρκετό υπόλοιπο, παίρνει πίστωση 1 $ για sandboxes που ισχύει 14 ημέρες.
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)
Θα δείτε το id του sandbox (sb_ και άλλοι 24 χαρακτήρες) και μετά 0 3.12.x. Το sandbox ξεκίνησε σε περίπου ένα δευτερόλεπτο, εκτέλεσε τον κώδικα και διαγράφηκε όταν τελείωσε το μπλοκ with.
Καλό να ξέρετε για το αποτέλεσμα:
- το
r.okείναι true όταν ο κωδικός εξόδου είναι 0 και η εντολή δεν έφτασε το χρονικό της όριο· - ένας μη μηδενικός κωδικός εξόδου δεν είναι exception, οπότε ελέγξτε μόνοι σας το
r.ok· - τα
stdoutκαιstderrπεριορίζονται σε 1 MiB το καθένα, και τοr.truncatedσας λέει αν η έξοδος κόπηκε.
4. Εγκαταστήστε ένα πακέτο και τρέξτε εντολές shell
Μέσα στο sandbox είστε root σε ένα μικρό σύστημα Linux με 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
Το προεπιλεγμένο χρονικό όριο είναι 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
Οι διαδρομές πρέπει να είναι απόλυτες. Μία μεταφορά περιορίζεται στα 5 MB· το download επιστρέφει bytes, το 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 $ ανά μπλοκ, οπότε και τα πέντε παραδείγματα μαζί κοστίζουν περίπου ένα τρίτο του σεντ. Οι τιμές όλων των πακέτων, η μόνιμη λειτουργία και τα όρια δαπανών βρίσκονται στα όρια και χρέωση sandboxes.
Όταν κάτι αποτύχει
Τα σφάλματα του API είναι exceptions που μπορείτε να πιάσετε:
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 έως τρεις φορές όταν ο server λέει πόσο να περιμένει. Και οι 11 κλάσεις σφαλμάτων είναι στην αναφορά του SDK.
Επόμενα βήματα
- Τα ίδια βήματα σε JavaScript: TypeScript SDK για sandboxes σε 5 λεπτά.
- Αφήστε ένα μοντέλο AI να γράψει τον κώδικα και να τον τρέξει εδώ: η πρώτη σας εργασία agent σε sandbox.
- Πακέτα, δοκιμαστική πίστωση και τι περιέχει ένα sandbox: η σελίδα των sandboxes.
Σχόλια
Δεν υπάρχουν ακόμη σχόλια. Γίνετε ο πρώτος.