Python SDK
Deployments
Using the Decorator
import basilica
@basilica.deployment(name="hello", port=8000)
def serve():
from http.server import HTTPServer, BaseHTTPRequestHandler
class Handler(BaseHTTPRequestHandler):
def do_GET(self):
self.send_response(200)
self.end_headers()
self.wfile.write(b'Hello!')
HTTPServer(('', 8000), Handler).serve_forever()
deployment = serve()
print(f"Live at: {deployment.url}")Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
name | str | required | Deployment name (DNS-safe) |
image | str | "python:3.11-slim" | Container image |
port | int | 8000 | Port your app listens on |
cpu | str | "500m" | CPU allocation |
memory | str | "512Mi" | Memory allocation |
env | Dict[str, str] | None | Environment variables |
pip_packages | List[str] | None | Pip dependencies |
replicas | int | 1 | Number of instances |
ttl_seconds | int | None | Auto-delete timer |
timeout | int | 300 | Deploy timeout (seconds) |
For GPU options, see GPU Workloads. For persistent storage, see Storage.
DeployedFunction API
serve.spec # DeploymentSpec configuration
serve.deployment # Current Deployment (after deploy)
serve() # Deploy (shorthand for .deploy())
serve.deploy() # Deploy with default client
serve.local() # Run locally for testingLocal Testing
@basilica.deployment(name="app", port=8000)
def serve():
print("Starting server...")
serve.local() # Runs locally, doesn't deployUsing client.deploy()
Use for existing files, pre-built images, or dynamic scenarios.
from basilica import BasilicaClient
client = BasilicaClient()
deployment = client.deploy(
name="my-app",
source="app.py",
port=8000,
pip_packages=["fastapi", "uvicorn"],
)Source Options
# File path
client.deploy(name="app", source="app.py", port=8000)
# Inline code
client.deploy(name="app", source="print('hello')", port=8000)
# Image only (no source)
client.deploy(name="nginx", image="nginx:alpine", port=80)Deployment Object
Every deployment returns a Deployment object:
| Property | Type | Description |
|---|---|---|
url | str | Public URL |
name | str | Deployment name |
state | str | Current state |
namespace | str | Kubernetes namespace |
user_id | str | Owner's user ID |
created_at | datetime | Creation timestamp |
Methods
deployment.status() # Get detailed status
deployment.logs() # Get container logs
deployment.logs(tail=50) # Last 50 lines
deployment.delete() # Delete deployment
deployment.wait_until_ready() # Wait for ready stateStatus Details
status = deployment.status()
print(f"State: {status.state}")
print(f"Ready: {status.replicas_ready}/{status.replicas_desired}")Status properties: state, phase, replicas_ready, replicas_desired, is_ready, is_failed, is_pending.
Management
# Get deployment by name
deployment = client.get("my-app")
# List all deployments
for d in client.list():
print(f"{d.name}: {d.state}")
# Delete
deployment.delete()Next Steps
- Storage - Persist data across restarts
- GPU Workloads - Deploy on GPU hardware
- Examples - More deployment patterns