Multinode - Rapidly build distributed cloud applications in Python | Product Hunt


Persistent deployments

A persistent deployment is for running a web app backend in production. It is created using the multinode deploy command.

Unlike ephemeral runs, persistent deployments are not tied to the terminal process. They remain alive until the developer runs the multinode undeploy command (see below).

The full syntax is for the multinode deploy command is:

multinode deploy \
    --env-file={environment-variables-file} \
    --region={cloud-region-name} \

Rules about environment variable formatting, cloud region naming and function imports are the same as for ephemeral runs.

Managing the lifecycle of persistent deployments

Upgrading a deployment

multinode upgrade \
    --env-file={environment-variables-file} \

Undeploying a deployment

multinode undeploy {deployment-name}

As written, this command undeploys the compute, but retains all data in the system (e.g. dicts, job results and logs). If a new deployment is later created with the same name, then the original data will still be accessible.

Data from undeployed deployments will automatically be erased after 30 days.

To force immediate deletion, run the following command

multinode undeploy {deployment-name} --delete-data

Listing all deployments

multinode list

Getting metadata about a deployment

multinode describe {deployment-name}

This returns a list of workers or replicas associated with each workload. For each worker or replica, the following information will be displayed:

  • The status of the worker or replica ("RUNNING" or "TERMINATED").
  • The time when the worker was created, and the time when the worker terminated (if applicable).
  • The current CPU and memory utilisation (if currently running).
  • Whether the worker is occupied or idle (if applicable).

This command will also output the domain names for each deployed service.

Viewing logs

  • Logs from a service
multinode logs {deployment-name} --service {service-name}
  • Logs from a function
multinode logs {deployment-name} --function {function-name}
  • Logs from a job execution
multinode logs {deployment-name} --job {job-name} --id {job-id}
  • Logs from a scheduled task
multinode logs {deployment-name} \
  --scheduled-task {scheduled-task-name} \
  --last {number-of-executions}
  • Logs from a daemon
multinode logs {deployment-name} --daemon {daemon-name}

Logs will persist for 30 days.

Ephemeral runs