Skip to main content

Framework for task processing executors and configuration

Project description

Task Processing

Interfaces and shared infrastructure for generic task processing (also known as taskproc) at Yelp.

Developer Setup

Pre-requisites

Running examples

hello-world.py is a very simple annotated example that launches a task to echo hello world. From the root of the repository, run:

docker-compose -f examples/cluster/docker-compose.yaml \
  run playground examples/hello-world.py

This will bring up a single master, single agent Mesos cluster using Docker Compose and launch a single task which will print "hello world" to the sandbox's stdout before terminating.

Other examples available include:

  • async.py Example of the async task runner.

  • dynamo_persistence.py Example that shows how task events may be persisted to DynamoDB using the stateful plugin.

  • file_persistence.py Example that shows how task events may be persisted to disk using the stateful plugin.

  • promise.py Example that shows how the promise/future task runner (not yet implemented) may be used.

  • subscription.py Example of the subscription task runner.

  • sync.py Brief example using the sync task runner.

  • timeout.py Example that shows how to timeout a task execution using the timeout plugin.

  • retry.py Example that shows how to retry a task on failure using the retry plugin.

  • task_logging.py Example that shows how to fetch task logs from Mesos agents using the logging plugin.

Running tests

From the root of the repository, run:

make

Repository Structure

/interfaces

Event

Runner

TaskExecutor

/plugins

Plugins can be chained to create a task execution pipeline with more than one property. Please refer to persistence/retry/timeout examples.

mesos

Implements all required interfaces to talk to Mesos deployment. This plugin uses PyMesos to communicate with Mesos.

timeout

Implements an executor to timeout task execution.

retrying

Implements an executor to retry task execution upon failure.

logging

Implements an executor to retrieve task logs from Mesos agents. Note that it has to be the immediate upstream executor of the mesos executor.

Configuration options
  • authentication_principal Mesos principal
  • credential_secret_file path to file containing Mesos secret
  • mesos_address host:port to connect to Mesos cluster
  • event_translator a fucntion that maps Mesos-specific events to Event objects

stateful

TODO: documentation

/runners

Runners provide specific concurrency semantics and are supposed to be platform independent.

Sync

Running a task is a blocking operation. sync runners block until the running task has completed or a stop event is received.

Async

Provide callbacks for different events in tasks' lifecycle. async runners allow tasks to specify one or more EventHandlers which consist of predicates and callbacks. Predicates are evaluated when an update is received from the task (e.g. that it has terminated and whether or not it has succeded) and if the predicate passes, the callback is called.

Promise/Future

Running a task returns future object.

Subscription

Provide a queue object and receive all events in there.

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

task_processing-1.2.0.tar.gz (47.9 kB view details)

Uploaded Source

Built Distribution

task_processing-1.2.0-py2.py3-none-any.whl (60.2 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file task_processing-1.2.0.tar.gz.

File metadata

  • Download URL: task_processing-1.2.0.tar.gz
  • Upload date:
  • Size: 47.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.8.19

File hashes

Hashes for task_processing-1.2.0.tar.gz
Algorithm Hash digest
SHA256 e4c378564a84411c8d129a4b506fe2548b43c4b4f23316b84a79e37b6051f9e7
MD5 f96a60fb432d5f159ff6fdef18e0504a
BLAKE2b-256 7cf0937d5ef582fba6eb20da45784929f164110efed75ae14e1f9860918325d4

See more details on using hashes here.

Provenance

File details

Details for the file task_processing-1.2.0-py2.py3-none-any.whl.

File metadata

File hashes

Hashes for task_processing-1.2.0-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 6b39e88117e21cd68868ede2d67b39dec1a4aea01b7e9e3f3591b6c3a8df1703
MD5 6eb961e9553b092ed21d1b1dda96b4bb
BLAKE2b-256 c1608504f163883ad85c13ac69fef28b9f1d2c1a2101ebd194c6a54e83eb53f6

See more details on using hashes here.

Provenance

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