−25%

Windows-এর বার্ষিক পেমেন্টে, ৩১ অক্টোবর পর্যন্ত। প্ল্যান দেখুন

EQVPS
শুরু করুন

৫ মিনিটে স্যান্ডবক্সের Python SDK: pip install eqvps থেকে প্রথম রান পর্যন্ত

EQVPS-এর Python SDK ইনস্টল করুন, Firecracker স্যান্ডবক্স চালু করুন, কোড চালান, প্যাকেজ ইনস্টল করুন, ফাইল আনা-নেওয়া করুন এবং লম্বা কাজ ব্যাকগ্রাউন্ডে চালান। সব কমান্ডসহ ছয়টি ধাপ, আর পুরো খরচ এক সেন্টেরও কম।

এই গাইড আপনাকে শূন্য থেকে Python-এ চলমান একটি স্যান্ডবক্স পর্যন্ত নিয়ে যাবে। আপনি একটি বিচ্ছিন্ন Firecracker microVM চালু করবেন, তাতে কোড চালাবেন, একটি প্যাকেজ ইনস্টল করবেন, একটি ফাইল ভেতরে পাঠিয়ে আবার বের করবেন এবং লম্বা কোনো কাজ ব্যাকগ্রাউন্ডে চালাবেন। প্রতিটি ধাপ মাত্র কয়েক লাইন, শুধু পেস্ট করলেই হবে।

আপনার লাগবে Python 3.8 বা নতুন এবং একটি EQVPS অ্যাকাউন্ট। SDK-এর কোনো ডিপেন্ডেন্সি নেই।

১. টোকেন নিন

স্যান্ডবক্সের খরচ অ্যাকাউন্টের ব্যালেন্স থেকে কাটা হয়, তাই SDK-এর অ্যাকাউন্ট টোকেন দরকার। অ্যাকাউন্ট সংযোগ পাতায় টোকেন পাওয়ার তিনটি উপায় আছে: ড্যাশবোর্ড, API বা MCP সার্ভার। তারপর এটি এনভায়রনমেন্টে রাখুন:

export EQVPS_API_KEY="your-token"

এখনো ব্যালেন্স নেই? সমস্যা নেই। নতুন অ্যাকাউন্ট যথেষ্ট ব্যালেন্স ছাড়া প্রথমবার স্যান্ডবক্স তৈরি করলে ১৪ দিন মেয়াদি $1 স্যান্ডবক্স ক্রেডিট পায়।

২. SDK ইনস্টল করুন

pip install eqvps

৩. স্যান্ডবক্স চালু করুন এবং কোড চালান

এটি 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 (sb_ আর আরও ২৪টি অক্ষর) দেখবেন, তারপর 0 3.12.x। স্যান্ডবক্স প্রায় এক সেকেন্ডে চালু হয়েছে, কোড চালিয়েছে, আর with ব্লক শেষ হতেই মুছে গেছে।

ফলাফল নিয়ে যা জানা দরকার:

  • এক্সিট কোড 0 হলে এবং কমান্ড টাইমআউটে না পৌঁছালে r.ok true হয়;
  • শূন্য নয় এমন এক্সিট কোড exception নয়, তাই r.ok নিজে পরীক্ষা করুন;
  • stdout ও stderr প্রতিটি 1 MiB পর্যন্ত সীমিত, আর আউটপুট কাটা পড়েছে কি না তা r.truncated জানায়।

৪. প্যাকেজ ইনস্টল করুন এবং shell কমান্ড চালান

স্যান্ডবক্সের ভেতরে আপনি Python, Node.js, git ও curl থাকা একটি ছোট Linux সিস্টেমের root। 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

ডিফল্ট টাইমআউট ৩০ সেকেন্ড, আর একটি সিনক্রোনাস কল সর্বোচ্চ ৫৫ সেকেন্ড চলে। বড় ইনস্টলেশন ব্যাকগ্রাউন্ড টাস্কে চালান (ধাপ ৬)।

৫. ফাইল ভেতরে-বাইরে পাঠান

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

পাথ অবশ্যই পূর্ণাঙ্গ (absolute) হতে হবে। একবারের ট্রান্সফার 5 MB পর্যন্ত; download বাইট ফেরত দেয়, download_text স্ট্রিং।

৬. লম্বা কাজ ব্যাকগ্রাউন্ডে চালান

background=True দিলে অপেক্ষার বদলে সঙ্গে সঙ্গে একটি টাস্ক পাবেন। এতে ৫৫ সেকেন্ডের সীমা নেই:

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() প্রতি ২ সেকেন্ডে খোঁজ নেয় এবং নতুন আউটপুট আসামাত্র দেখায়। আপনি নিজেও task.logs() ডাকতে পারেন, বা থামাতে task.kill()। টাস্ক চলতে থাকলে নিষ্ক্রিয়তার কারণে স্যান্ডবক্স মুছে যায় না।

খরচ কত হলো

ওপরের প্রতিটি with ব্লক কয়েক সেকেন্ড ছিল এবং সর্বনিম্ন ৬০ সেকেন্ড হিসেবে বিল হয়েছে। small-এ প্রতি ব্লক $0.00055, তাই পাঁচটি উদাহরণ মিলিয়ে প্রায় এক সেন্টের তিন ভাগের এক ভাগ। সব ট্যারিফের দাম, স্থায়ী মোড ও খরচের সীমা আছে স্যান্ডবক্সের সীমা ও বিলিং-এ।

কিছু ভুল হলে

API-এর ত্রুটিগুলো এমন exception যা ধরা যায়:

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 উত্তর তিনবার পর্যন্ত আবার চেষ্টা করে। ১১টি ত্রুটি ক্লাসের সবগুলো আছে SDK রেফারেন্স-এ।

এরপর কী

FAQ

চেষ্টা করতে কি কার্ড লাগবে?

না। নতুন অ্যাকাউন্ট যথেষ্ট ব্যালেন্স ছাড়া প্রথমবার স্যান্ডবক্স তৈরি করলে স্যান্ডবক্সের জন্য $1 ক্রেডিট পায়। এই পুরো গাইডে তার এক সেন্টেরও অনেক কম খরচ হয়। এরপর ক্রিপ্টো দিয়ে ব্যালেন্স রিচার্জ করবেন।

স্যান্ডবক্সের ভেতরে কি pip দিয়ে প্যাকেজ ইনস্টল করা যায়?

হ্যাঁ। স্যান্ডবক্স বাইরের ইন্টারনেটে যেতে পারে, আর pip কোনো virtualenv ছাড়াই সিস্টেমে ইনস্টল করে। torch-এর মতো ভারী প্যাকেজে বেশি ডিস্ক ও মেমরি লাগে, তাই plus বা তার বড় ট্যারিফ নিন।

আমার কমান্ড ৩০ সেকেন্ড পরে থেমে যায় কেন?

run ও exec-এর ডিফল্ট টাইমআউট ৩০ সেকেন্ড, আর সিনক্রোনাস কলের সর্বোচ্চ সীমা ৫৫ সেকেন্ড। এর চেয়ে লম্বা যেকোনো কাজ background=True দিয়ে চালান, যেখানে এই সীমা নেই।

স্ক্রিপ্ট ক্র্যাশ করলে কি স্যান্ডবক্স মুছে যায়?

with ব্লক ব্যবহার করলে হ্যাঁ: ব্লক শেষ হলেই স্যান্ডবক্স মুছে যায়, exception হলেও। এটা ছাড়া অস্থায়ী স্যান্ডবক্স ৫ মিনিট নিষ্ক্রিয় থাকার পর মুছে যায়, আর সেই মিনিটগুলোর জন্যও টাকা লাগে।

মন্তব্য

এখনো কোনো মন্তব্য নেই। প্রথম হোন।

একটি মন্তব্য দিন

মন্তব্য প্রকাশের আগে মডারেট করা হয়।