−25%

στα Windows με ετήσια χρέωση, έως 31/10. Δείτε τα πακέτα

EQVPS
Ξεκινήστε

Python SDK για sandboxes σε 5 λεπτά: από το pip install eqvps στην πρώτη εκτέλεση

Εγκαταστήστε το Python SDK της EQVPS, ξεκινήστε ένα sandbox Firecracker, εκτελέστε κώδικα, εγκαταστήστε ένα πακέτο, μεταφέρετε αρχεία και τρέξτε μια μεγάλη εργασία στο παρασκήνιο. Έξι βήματα με όλες τις εντολές, και το σύνολο κοστίζει κάτω από ένα σεντ.

Αυτός ο οδηγός σας πάει από το μηδέν σε ένα 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.

Επόμενα βήματα

Συχνές ερωτήσεις

Χρειάζομαι κάρτα για να το δοκιμάσω;

Όχι. Ένας νέος λογαριασμός παίρνει πίστωση 1 $ για sandboxes την πρώτη φορά που δημιουργεί sandbox χωρίς αρκετό υπόλοιπο. Όλος αυτός ο οδηγός χρησιμοποιεί πολύ λιγότερο από ένα σεντ από αυτήν. Μετά φορτίζετε το υπόλοιπο με κρυπτονομίσματα.

Μπορώ να εγκαταστήσω πακέτα με pip μέσα στο sandbox;

Ναι. Τα sandboxes έχουν εξερχόμενη πρόσβαση στο διαδίκτυο και το pip εγκαθιστά στο σύστημα χωρίς virtualenv. Βαριά πακέτα όπως το torch χρειάζονται περισσότερο δίσκο και μνήμη, γι' αυτό επιλέξτε plus ή μεγαλύτερο πακέτο.

Γιατί η εντολή μου σταματά μετά από 30 δευτερόλεπτα;

Το προεπιλεγμένο χρονικό όριο των run και exec είναι 30 δευτερόλεπτα και το μέγιστο για μια σύγχρονη κλήση είναι 55. Ό,τι διαρκεί περισσότερο πρέπει να τρέχει με background=True, που δεν έχει αυτό το όριο.

Διαγράφεται το sandbox αν το script μου κρασάρει;

Με το μπλοκ with, ναι: το sandbox διαγράφεται όταν τελειώνει το μπλοκ, ακόμη και μετά από exception. Χωρίς αυτό, ένα προσωρινό sandbox διαγράφεται μετά από 5 λεπτά αδράνειας, και αυτά τα λεπτά τα πληρώνετε.

Σχόλια

Δεν υπάρχουν ακόμη σχόλια. Γίνετε ο πρώτος.

Αφήστε ένα σχόλιο

Τα σχόλια ελέγχονται πριν εμφανιστούν.