−25%

untuk Windows tahunan, hingga 31 Okt. Lihat paket

EQVPS
Mulai

SDK Python untuk sandbox dalam 5 menit: dari pip install eqvps sampai run pertama

Pasang SDK Python EQVPS, jalankan sandbox Firecracker, eksekusi kode, pasang paket, pindahkan file, dan jalankan pekerjaan panjang di latar belakang. Enam langkah lengkap dengan semua perintah, dan semuanya tak sampai satu sen.

Panduan ini membawa Anda dari nol sampai sandbox yang berjalan di Python. Anda akan menjalankan microVM Firecracker yang terisolasi, mengeksekusi kode di dalamnya, memasang paket, memindahkan file masuk dan keluar, lalu menjalankan sesuatu yang lama di latar belakang. Setiap langkah hanya beberapa baris untuk ditempel.

Anda butuh Python 3.8 atau lebih baru dan akun EQVPS. SDK ini tidak punya dependensi.

1. Dapatkan token

Sandbox dibayar dari saldo akun, jadi SDK butuh token akun. Halaman menghubungkan akun menunjukkan tiga cara mendapatkannya: dasbor, API, atau server MCP. Lalu simpan di environment:

export EQVPS_API_KEY="your-token"

Belum punya saldo? Tidak masalah. Saat akun baru pertama kali membuat sandbox tanpa saldo yang cukup, akun itu mendapat kredit sandbox $1 yang berlaku 14 hari.

2. Pasang SDK

pip install eqvps

3. Jalankan sandbox dan eksekusi kode

Simpan ini sebagai hello.py lalu jalankan:

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)

Anda akan melihat id sandbox (sb_ dan 24 karakter lagi), lalu 0 3.12.x. Sandbox menyala dalam sekitar satu detik, menjalankan kode, dan terhapus saat blok with selesai.

Hal yang perlu diketahui tentang hasilnya:

  • r.ok bernilai true jika kode keluar 0 dan perintah tidak kena batas waktu;
  • kode keluar yang bukan nol bukan exception, jadi periksa r.ok sendiri;
  • stdout dan stderr masing-masing dibatasi 1 MiB, dan r.truncated memberi tahu jika output terpotong.

4. Pasang paket dan jalankan perintah shell

Di dalam sandbox Anda adalah root pada sistem Linux kecil dengan Python, Node.js, git, dan curl. exec menjalankan perintah shell apa pun:

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

Batas waktu bawaan 30 detik dan panggilan sinkron paling lama 55 detik. Instalasi besar sebaiknya dijalankan sebagai tugas latar belakang (langkah 6).

5. Pindahkan file masuk dan keluar

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

Path harus absolut. Satu transfer dibatasi 5 MB; download mengembalikan byte, download_text mengembalikan string.

6. Jalankan pekerjaan panjang di latar belakang

Berikan background=True dan Anda langsung mendapat tugas, tanpa menunggu. Tugas ini tidak punya batas 55 detik:

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() memeriksa setiap 2 detik dan mencetak output baru begitu tiba. Anda juga bisa memanggil task.logs() sendiri, atau task.kill() untuk menghentikannya. Selama tugas berjalan, sandbox tidak dihapus karena tidak aktif.

Berapa biayanya

Setiap blok with di atas hidup beberapa detik dan ditagih minimum 60 detik. Di small itu $0.00055 per blok, jadi kelima contoh sekaligus kira-kira sepertiga sen. Harga semua tarif, mode persisten, dan batas pengeluaran ada di batas dan penagihan sandbox.

Saat ada yang gagal

Error dari API adalah exception yang bisa Anda tangkap:

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 sudah mengulang respons 429 dan 503 hingga tiga kali saat server memberi tahu berapa lama harus menunggu. Ke-11 kelas error tercantum di referensi SDK.

Langkah berikutnya

FAQ

Apakah saya perlu kartu kredit untuk mencoba?

Tidak. Akun baru mendapat kredit sandbox $1 saat pertama kali membuat sandbox tanpa saldo yang cukup. Seluruh panduan ini memakai jauh di bawah satu sen dari kredit itu. Setelah itu Anda mengisi saldo dengan kripto.

Bisakah saya memasang paket dengan pip di dalam sandbox?

Bisa. Sandbox punya akses internet keluar, dan pip memasang ke sistem tanpa virtualenv. Paket berat seperti torch butuh lebih banyak disk dan memori, jadi pakai tarif plus atau lebih besar.

Mengapa perintah saya berhenti setelah 30 detik?

Batas waktu bawaan run dan exec adalah 30 detik, dan maksimum untuk panggilan sinkron adalah 55. Apa pun yang lebih lama harus dijalankan dengan background=True, yang tidak punya batas itu.

Apakah sandbox terhapus jika skrip saya crash?

Dengan blok with, ya: sandbox dihapus saat blok selesai, termasuk setelah exception. Tanpa itu, sandbox sementara dihapus setelah 5 menit tanpa aktivitas, dan menit-menit itu tetap dibayar.

Komentar

Belum ada komentar. Jadilah yang pertama.

Tinggalkan komentar

Komentar dimoderasi sebelum muncul.