Skip to main content

Cadasta Worker Toolbox

Project description

Build Status Requirements Status

A collection of helpers to assist in quickly building asynchronous workers for the Cadasta system.

Architecture

The Cadasta asynchronous system is designed so that both the scheduled tasks and the task results can be tracked by the central Cadasta Platform. To ensure that this takes place, all Celery workers must be correctly configured to support these features.

Tracking Scheduled Tasks

To keep our system aware of all tasks being scheduled, the Cadasta Platform has a process running to consume task messages off of a task-monitor queue and insert those messages into our database. To support this design, all task producers (including worker nodes) must publish their task messages to both the normal destination queues and the task-monitor queue. This is acheived by registering all queues with a Topic Exchange, setting the task-monitor queue to subscribe to all messages sent to the exchange, and setting standard work queues to subscribe to messages with a matching routing_key. Being that the Cadasta Platform is designed to work with Amazon SQS and the SQS backend only keeps exchange/queue declarations in memory, each message producer must have this set up within their configuration.

Tracking Task Results

TODO

Library

cadasta.workertoolbox.conf.Config

The Config class was built to simplify configuring Celery settings, helping to ensure that all workers adhere to the architecture requirements of the Cadasta asynchronous system. An instance of the Config should come configured with all Celery settings that are required by our system. It is the aim of the class to not require much customization on the part of the developer. However, some customization may be needed when altering configuration between environments (e.g. if dev settings vary greatly from prod settings).

Required Arguments

queues

The only required argument is the queues array. This should contain an array of names for queues that are to be used by the given worker. This includes queues from which the node processes tasks and queues into which the node will schedule tasks. It is not necessary to include the 'celery' or 'platform.fifo' queues, as these will be added automatically. The input of the queues variable will be stored as QUEUES on the Config instance.

Optional Arguments

Any Celery setting may be submitted. It is internal convention that we use the lowercase Celery settings rather than their older upper-case counterparts. This will ensure that they are displayed when calling repr on the Conf instance.

result_backend

TODO

task_queues

TODO

Note: It is recommended that developers not alter this setting.

task_routes

TODO

Note: It is recommended that developers not alter this setting.

Internal Variables

By convention, all variables pertinent to only the Config class (i.e. not used by Celery) should be written entirely uppercase.

RESULT_DB_USER

Variable used to populate the default result_backend template.

RESULT_DB_PASS

Variable used to populate the default result_backend template.

RESULT_DB_HOST

Variable used to populate the default result_backend template.

RESULT_DB_NAME

Variable used to populate the default result_backend template.

PLATFORM_QUEUE_NAME

Defaults to 'platform.fifo'.

Note: It is recommended that developers not alter this setting.

Development

Testing

pip install -r requirements-test.txt
./runtests

Deploying

pip install -r requirements-deploy.txt
python setup.py clean dist publish tag

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

cadasta-workertoolbox-0.0.2.dev5.tar.gz (6.4 kB view details)

Uploaded Source

Built Distribution

cadasta_workertoolbox-0.0.2.dev5-py2.py3-none-any.whl (10.2 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file cadasta-workertoolbox-0.0.2.dev5.tar.gz.

File metadata

File hashes

Hashes for cadasta-workertoolbox-0.0.2.dev5.tar.gz
Algorithm Hash digest
SHA256 a6d73a768b4180d85c2af81f7b188ded2c3c92e1ad6005c3363a07e9d058a917
MD5 4277369889a6ea4f6e1d2a67db7b1459
BLAKE2b-256 70a8d12805cd18395386f1ed58efc145d15b8f3776202d8ece4800d8e8b855b5

See more details on using hashes here.

File details

Details for the file cadasta_workertoolbox-0.0.2.dev5-py2.py3-none-any.whl.

File metadata

File hashes

Hashes for cadasta_workertoolbox-0.0.2.dev5-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 e51353ffccbec19388a97703ae9a8dfe59a3a97768554baf5c6ad58144a86eab
MD5 564a60308cc1998c0f6fe53fbf9c221a
BLAKE2b-256 55c54f89bcbb79eabe1870cd426ed136e8cf170b24aec9f826d3bb2f3f78ca63

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page