Bu rehber sizi sıfırdan Python'da çalışan bir sandbox'a götürür. Yalıtılmış bir Firecracker microVM başlatacak, içinde kod çalıştıracak, bir paket kuracak, bir dosyayı içeri alıp dışarı çıkaracak ve uzun bir işi arka planda çalıştıracaksınız. Her adım yapıştırılacak birkaç satırdır.
Python 3.8 veya üstü ve bir EQVPS hesabı gerekir. SDK'nın bağımlılığı yoktur.
1. Token alın
Sandbox'lar hesap bakiyesinden ödenir, bu yüzden SDK'nın bir hesap token'ına ihtiyacı vardır. Hesabınızı bağlama sayfası token almanın üç yolunu gösterir: panel, API veya MCP sunucusu. Ardından onu ortama koyun:
export EQVPS_API_KEY="your-token"
Henüz bakiye yok mu? Sorun değil. Yeni bir hesap, yeterli bakiyesi olmadan ilk kez sandbox oluşturduğunda 14 gün geçerli 1 $ sandbox kredisi alır.
2. SDK'yı kurun
pip install eqvps
3. Sandbox başlatın ve kod çalıştırın
Bunu hello.py olarak kaydedip çalıştırın:
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 kimliğini (sb_ ve ardından 24 karakter), sonra da 0 3.12.x göreceksiniz. Sandbox yaklaşık bir saniyede başladı, kodu çalıştırdı ve with bloğu bittiğinde silindi.
Sonuç hakkında bilmeye değer birkaç şey:
- çıkış kodu 0 olduğunda ve komut zaman aşımına uğramadığında
r.oktrue olur; - sıfırdan farklı bir çıkış kodu istisna değildir, bu yüzden
r.okdeğerini kendiniz kontrol edin; stdoutvestderrher biri 1 MiB ile sınırlıdır; çıktı kesildiyser.truncatedbunu söyler.
4. Paket kurun ve kabuk komutları çalıştırın
Sandbox içinde Python, Node.js, git ve curl bulunan küçük bir Linux sisteminde root'sunuz. exec herhangi bir kabuk komutunu çalıştırır:
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
Varsayılan zaman aşımı 30 saniyedir ve eşzamanlı bir çağrı en fazla 55 saniye sürebilir. Büyük kurulumlar bir arka plan görevine aittir (6. adım).
5. Dosyaları içeri alın ve dışarı çıkarın
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
Yollar mutlak olmalıdır. Tek bir aktarım 5 MB ile sınırlıdır; download bayt, download_text metin döndürür.
6. Uzun bir işi arka planda çalıştırın
background=True verin; beklemek yerine bir görev alırsınız. Görevin 55 saniyelik sınırı yoktur:
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() her 2 saniyede bir sorgular ve yeni çıktıyı geldikçe yazdırır. task.logs() çağrısını kendiniz yapabilir ya da durdurmak için task.kill() kullanabilirsiniz. Bir görev çalıştığı sürece sandbox hareketsizlik nedeniyle silinmez.
Bunun maliyeti
Yukarıdaki her with bloğu birkaç saniye yaşadı ve 60 saniyelik asgari süre üzerinden faturalandı. small tarifesinde bu blok başına 0,00055 $ eder; yani beş örneğin toplamı yaklaşık üçte bir sent tutar. Tüm tarifelerin fiyatları, kalıcı mod ve harcama limitleri sandbox sınırları ve faturalama sayfasındadır.
Bir şeyler ters gittiğinde
API hataları yakalayabileceğiniz istisnalardır:
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)
Sunucu ne kadar bekleneceğini söylediğinde SDK, 429 ve 503 yanıtlarını zaten üç kereye kadar yeniden dener. 11 hata sınıfının tamamı SDK başvurusunda listelenmiştir.
Sonraki adımlar
- Aynı adımlar JavaScript'te: 5 dakikada sandbox için TypeScript SDK.
- Kodu bir yapay zekâ modeli yazsın ve burada çalıştırsın: sandbox'ta ilk ajan göreviniz.
- Tarifeler, deneme ve bir sandbox'ın içinde neler olduğu: sandbox sayfası.
Yorumlar
Henüz yorum yok. İlk olun.