Configuration

Configuration is handled in three layers, each layer overriding anything configured in the previous layer. These layers are, in order of highest to lowest priority:

  1. Command line options

  2. Environment variables

  3. Configuration file

Base worker configuration

These are the configuration options that are common to all worker types.

An example of a yaml file configuration:

amqp:
   hostname: localhost
   port: 5672
   username: guest
   password: guest
   vhost: /
worker_concurrency: 10
sentry_dsn: https://key@sentry.io/12345

config

amqp

The AMQP configuration. See amqp for details.

amqp_url

The AMQP URL to use. For example, amqp://user:pass@host/vhost. If specified, it is used instead of the amqp configuration.

worker_concurrency

The number of messages to prefetch and process in parallel. Defaults to 20.

sentry_dsn

The Sentry DSN to use. If specified, errors will be logged to Sentry.

http_bind

Optional. If supplied, runs an HTTP server that binds to http_bind. For example, localhost:8000 to bind to port 8000 on localhost, or 0.0.0.0:80 to bind to port 80 on all interfaces, or unix:/tmp/socket to bind to a unix socket. See the hypercorn documentation for more details. Note that HTTPS is not handled, we recommend using something like nginx in front of the transport to handle HTTPS.

log_level

The threshold for which messages to log. Defaults to INFO.

amqp

The amqp configuration options are:

hostname

The hostname of the AMQP server. Defaults to 127.0.0.1

port

The port of the AMQP server. Defaults to 5672

username

The username to use to authenticate to the AMQP server. Defaults to guest

password

The password to use to authenticate to the AMQP server. Defaults to guest

vhost

The virtual host to use for the AMQP server. Defaults to /

Command line options

The command line options are parsed first. The command line tool is vumi2. It currently only has one task, worker, which runs a Vumi worker.

worker

usage: vumi2 worker {options} worker_class

positional arguments:

worker_class

The python import path of the worker class to run

options:

-h, --help

Show this message and exit.

Any additional configuration options specific to the worker class can also be passed through the command line. They are converted from snake case to kebab case. For example, to configure a redis_url option for a worker type that needs access to a Redis instance, you would use --redis-url redis://localhost.

Nested configuration options are also supported, they are specified by a single option separated by a - symbol. For example, to configure amqp.host, you would use the option --amqp-host.

Environment variables

Environment variables are the second priority, so will get overwritten by command line arguments. They are in screaming camel case, for example AMQP_HOSTNAME.

There is a special environment variable, VUMI_CONFIG_PREFIX, which specifies a prefix for all environment variables. It defaults to no prefix. For example, if VUMI_CONFIG_PREFIX is set to VUMI, then the environment variable VUMI_AMQP_HOSTNAME will be used instead of AMQP_HOSTNAME.

Nested configuration options are also supported, they are specified by a single variable separated by a _ symbol. For example, to configure amqp.host, you would use the option AMQP_HOST.

Configuration file

The configuration file is the third priority, so will be overwritten by both environment variables and command line arguments. It is in YAML format.

There is a special environment variable, VUMI_CONFIG_FILE, which specifies the path to the configuration file. It defaults to config.yaml.

Configuration is specified in snake case, and can be nested using dictionaries. For example, configuring the AMQP host and port:

amqp:
   host: localhost
   port: 5672