Skip to content

Latest commit

 

History

History
60 lines (40 loc) · 1.73 KB

executor.md

File metadata and controls

60 lines (40 loc) · 1.73 KB

Functions are executed within containers. In the following, we will describe how incoming requests are served within containers, assuming that a warm container for the function exists.

Each function container must run an Executor server, which listens for HTTP requests on port 8080 (by default).

When a function request is scheduled for local execution within a warm container, an invocation request is sent to the Executor as follows:

  • URL: <container IP>:<executor port>/invoke

  • Method: POST

  • Body: an executor.InvocationRequest (JSON-encoded)

  • Response (on success): an executor.InvocationResult (JSON-encoded)

An InvocationRequest has the following fields:

type InvocationRequest struct {
	Command      []string
	Params       map[string]interface{}
	Handler      string
	HandlerDir   string
	ReturnOutput bool
}
  • Command (runtime-dependent; optional, depending on the Executor implementation): the command that the Executor has to run upon reception of a new request. E.g., for a Python runtime, it may be set as python /entrypoint.py.

  • Params: user-specified function parameters.

  • Handler (runtime-dependent): identifier of the function to be executed. E.g., for Python runtimes, <module_name>.<function_name>.

  • HandlerDir: directory where the function code has been copied.

  • ReturnOutput: whether function standard output and error should be returned.

The following object is returned upon function completion (or failure):

type InvocationResult struct {
	Success  bool
	Result   string
	Output   string
}
  • Success: whether the function has been successfully executed.

  • Result: what the function returned.

  • Output: function combined std. output and error (if captured)