Skip to contents

Run a plumber API in parallel using valve. Plumber APIs are spawned on n_threads asynchronous threads on random ports. Incoming requests are handled on a single port and redirected to the plumber APIs in a simple round-robin fashion.

Usage

valve_run(
  filepath = "plumber.R",
  host = "127.0.0.1",
  port = 3000,
  n_min = 1,
  n_max = 3,
  workers = n_max,
  check_unused = 10,
  max_age = 300
)

Arguments

filepath

default "plumber.R". The path to the Plumber API. Provided to the file argument of plumber::plumb().

host

default "127.0.0.1". Where to host the valve app and Plumber APIs.

port

default 3000. The port to host the valve app on.

n_min

default 1. The minimum number of Plumber APIs made available. Must be smaller than n_max.

n_max

default 3. The maximum number of Plumber APIs to run in parallel.

workers

default n_max. The number of worker threads in the valve app to execute requests. This number should typically mimic n_max.

check_unused

default 10. The time interval, in seconds, to check for unused connections.

max_age

default 300 (five minutes). Specifies how long a connection can go unused without being terminated. If a connection reaches this age it will be terminated in the next pool check (interval determined by check_unused),

Examples

if (interactive()) {
  plumber_api_path <- system.file("plumber.R", package = "valve")
  valve_run(plumber_api_path)
}