modal.exception

modal.exception.AuthError

class AuthError(modal.exception.Error)

Raised when a client has missing or invalid authentication.

modal.exception.ClientClosed

class ClientClosed(modal.exception.Error)

modal.exception.ConnectionError

class ConnectionError(modal.exception.Error)

Raised when an issue occurs while connecting to the Modal servers.

modal.exception.DeprecationError

class DeprecationError(UserWarning)

UserWarning category emitted when a deprecated Modal feature or API is used.

modal.exception.DeserializationError

class DeserializationError(modal.exception.Error)

Raised to provide more context when an error is encountered during deserialization.

modal.exception.ExecutionError

class ExecutionError(modal.exception.Error)

Raised when something unexpected happened during runtime.

modal.exception.FunctionTimeoutError

class FunctionTimeoutError(modal.exception.TimeoutError)

Raised when a Function exceeds its execution duration limit and times out.

modal.exception.InputCancellation

class InputCancellation(BaseException)

Raised when the current input is cancelled by the task

Intentionally a BaseException instead of an Exception, so it won’t get caught by unspecified user exception clauses that might be used for retries and other control flow.

modal.exception.InteractiveTimeoutError

class InteractiveTimeoutError(modal.exception.TimeoutError)

Raised when interactive frontends time out while trying to connect to a container.

modal.exception.InvalidError

class InvalidError(modal.exception.Error)

Raised when user does something invalid.

modal.exception.ModuleNotMountable

class ModuleNotMountable(Exception)

modal.exception.MountUploadTimeoutError

class MountUploadTimeoutError(modal.exception.TimeoutError)

Raised when a Mount upload times out.

modal.exception.NotFoundError

class NotFoundError(modal.exception.Error)

Raised when a requested resource was not found.

modal.exception.OutputExpiredError

class OutputExpiredError(modal.exception.TimeoutError)

Raised when the Output exceeds expiration and times out.

modal.exception.PendingDeprecationError

class PendingDeprecationError(UserWarning)

Soon to be deprecated feature. Only used intermittently because of multi-repo concerns.

modal.exception.RemoteError

class RemoteError(modal.exception.Error)

Raised when an error occurs on the Modal server.

modal.exception.RequestSizeError

class RequestSizeError(modal.exception.Error)

Raised when an operation produces a gRPC request that is rejected by the server for being too large.

modal.exception.SandboxTerminatedError

class SandboxTerminatedError(modal.exception.Error)

Raised when a Sandbox is terminated for an internal reason.

modal.exception.SandboxTimeoutError

class SandboxTimeoutError(modal.exception.TimeoutError)

Raised when a Sandbox exceeds its execution duration limit and times out.

modal.exception.SerializationError

class SerializationError(modal.exception.Error)

Raised to provide more context when an error is encountered during serialization.

modal.exception.TimeoutError

class TimeoutError(modal.exception.Error)

Base class for Modal timeouts.

modal.exception.VersionError

class VersionError(modal.exception.Error)

Raised when the current client version of Modal is unsupported.

modal.exception.VolumeUploadTimeoutError

class VolumeUploadTimeoutError(modal.exception.TimeoutError)

Raised when a Volume upload times out.

modal.exception.deprecation_error

def deprecation_error(deprecated_on: tuple[int, int, int], msg: str):

modal.exception.deprecation_warning

def deprecation_warning(
    deprecated_on: tuple[int, int, int], msg: str, *, pending: bool = False, show_source: bool = True
) -> None:

Utility for getting the proper stack entry.

See the implementation of the built-in warnings.warn.

modal.exception.simulate_preemption

def simulate_preemption(wait_seconds: int, jitter_seconds: int = 0):

Utility for simulating a preemption interrupt after wait_seconds seconds. The first interrupt is the SIGINT signal. After 30 seconds, a second interrupt will trigger.

This second interrupt simulates SIGKILL, and should not be caught. Optionally add between zero and jitter_seconds seconds of additional waiting before first interrupt.

Usage:

import time
from modal.exception import simulate_preemption

simulate_preemption(3)

try:
    time.sleep(4)
except KeyboardInterrupt:
    print("got preempted") # Handle interrupt
    raise

See https://modal.com/docs/guide/preemption for more details on preemption handling.