Connects the httpuv and jobqueue R packages.
Usage
webqueue(
handler,
host = "0.0.0.0",
port = 8080L,
parse = NULL,
globals = list(),
packages = NULL,
namespace = NULL,
init = NULL,
max_cpus = availableCores(),
workers = ceiling(max_cpus * 1.2),
timeout = NULL,
hooks = NULL,
reformat = NULL,
stop_id = NULL,
copy_id = NULL,
bg = TRUE,
quiet = FALSE,
onHeaders = NULL,
staticPaths = NULL,
staticPathOptions = NULL
)Arguments
- handler
A
function (request)that will be run on a background worker process. The returned value will be passed throughreformat, then sent as the server's response to the web client.- host
A string that is a valid IPv4 address that is owned by this server, or
'0.0.0.0'to listen on all IP addresses.- port
A number or integer that indicates the server port that should be listened on. Note that on most Unix-like systems including Linux and macOS, port numbers smaller than 1024 require root privileges.
- parse
A
function (req)that is run on the foreground process to transform the HTTP request prior to passing it tohandler.reqis the environment object provided byhttpuv, amended with$ARGSand$COOKIES. Return value is used asreqgoing forward.- globals
A list of variables to add to
handler's evaluation environment.- packages
Character vector of package names to load on workers.
- namespace
The name of a package to attach to the worker's environment.
- init
A call or R expression wrapped in curly braces to evaluate on each worker just once, immediately after start-up. Will have access to variables defined by
globalsand assets frompackagesandnamespace. Returned value is ignored.- max_cpus
Total number of CPU cores that can be reserved by all running
jobs (sum(cpus)). Does not enforce limits on actual CPU utilization.- workers
How many background worker processes to start. Set to more than
max_cpusto enable interrupted workers to be quickly swapped out with standby Workers while a replacement Worker boots up.- timeout
A named numeric vector indicating the maximum number of seconds allowed for each state the
jobpasses through, or 'total' to apply a single timeout from 'submitted' to 'done'. Example:timeout = c(total = 2.5, running = 1).- hooks
A list of functions to run when the
jobstate changes, of the formhooks = list(created = function (job) {...}, done = ~{...}). Seevignette('hooks').- reformat
A
function (job)that is run in the foreground process to transform the output fromhandler. The default,reformat = NULL, is essentiallyfunction (job) { job$output }.- stop_id
A
function (job). If twojobs generate the same value from this function, then the earlierjobwill be aborted. If the returned value isNULL, nojobs will be stopped.- copy_id
A
function (job). If twojobs generate the same value from this function, then the laterjobwill clone its output from the earlierjob. If the returned value isNULL, nojobs will be cloned.- bg
Where/how to run the server.
TRUE: on a separate R process.FALSE: blocking on the current R process.NULL: non-blocking on the current R process.- quiet
If
TRUE, suppress error messages from starting thehttpuvserver.- onHeaders
A
function (request)triggered when headers are received byhttpuv. Return NULL to continue normal processing of the request, or a Rook response to send that response, stop processing the request, and ask the client to close the connection. (This can be used to implement upload size limits, for example.)- staticPaths
A named list of paths that will be served without invoking
handler()oronHeaders(). The name of each one is the URL path, and the value is either a string referring to a local path, or an object created by thehttpuv::staticPath()function.- staticPathOptions
A set of default options to use when serving static paths. If not set or NULL, then it will use the result from calling
httpuv::staticPathOptions()with no arguments.
Value
A webqueue object with the following methods:
$urlReturns the URL where the server is available.
$stop(reason = 'server stopped')Shuts down the
webqueueand all associated subprocesses. Stoppedjobs will have their$outputset to a object of class<interrupt/condition>.reason- A brief message for the condition object.Returns this
webqueue, invisibly.