modal.sandbox
modal.sandbox.LogsReader
class LogsReader(object)
Provides an interface to buffer and fetch logs from a sandbox stream (stdout
or stderr
).
read
def read(self) -> str:
Fetch and return contents of the entire stream.
Usage
sandbox = stub.app.spawn_sandbox("echo", "hello")
sandbox.wait()
print(sandbox.stdout.read())
modal.sandbox.Sandbox
class Sandbox(modal.object.Object)
A Sandbox
object lets you interact with a running sandbox. This API is similar to Python’s
asyncio.subprocess.Process.
Refer to the guide on how to spawn and use sandboxes.
def __init__(self, *args, **kwargs):
from_id
@classmethod
def from_id(cls: Type[O], object_id: str, client: Optional[_Client] = None) -> O:
Retrieve an object from its unique ID (accessed through obj.object_id
).
persist
def persist(
self, label: str, namespace=api_pb2.DEPLOYMENT_NAMESPACE_WORKSPACE, environment_name: Optional[str] = None
):
Object.persist
is deprecated for generic objects. See NetworkFileSystem.persisted
or Dict.persisted
.
from_name
@classmethod
def from_name(
cls: Type[O],
app_name: str,
tag: Optional[str] = None,
namespace=api_pb2.DEPLOYMENT_NAMESPACE_WORKSPACE,
environment_name: Optional[str] = None,
) -> O:
Retrieve an object with a given name and tag.
Useful for referencing secrets, as well as calling a function from a different app. Use this when attaching the object to a stub or function.
Examples
# Retrieve a secret
stub.my_secret = Secret.from_name("my-secret")
# Retrieve a function from a different app
stub.other_function = Function.from_name("other-app", "function")
# Retrieve a persisted Volume, Queue, or Dict
stub.my_volume = Volume.from_name("my-volume")
stub.my_queue = Queue.from_name("my-queue")
stub.my_dict = Dict.from_name("my-dict")
lookup
@classmethod
def lookup(
cls: Type[O],
app_name: str,
tag: Optional[str] = None,
namespace=api_pb2.DEPLOYMENT_NAMESPACE_WORKSPACE,
client: Optional[_Client] = None,
environment_name: Optional[str] = None,
) -> O:
Lookup an object with a given name and tag.
This is a general-purpose method for objects like functions, network file systems, and secrets. It gives a reference to the object in a running app.
Examples
# Lookup a secret
my_secret = Secret.lookup("my-secret")
# Lookup a function from a different app
other_function = Function.lookup("other-app", "function")
# Lookup a persisted Volume, Queue, or Dict
my_volume = Volume.lookup("my-volume")
my_queue = Queue.lookup("my-queue")
my_dict = Dict.lookup("my-dict")
wait
def wait(self):
Wait for the sandbox to finish running.
stdout
@property
def stdout(self) -> _LogsReader:
LogsReader
for the sandbox’s stdout stream.
stderr
@property
def stderr(self) -> _LogsReader:
LogsReader
for the sandbox’s stderr stream.
returncode
@property
def returncode(self) -> Optional[int]:
Return code of the sandbox process if it has finished running, else None
.