Skip to main content

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.

Release files for task-processing 1.4.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for task-processing 1.4.0
File Size Uploaded
task_processing-1.4.0.tar.gz 49.3 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for task-processing 1.4.0
File Interpreter ABI Platform
task_processing-1.4.0-py2.py3-none-any.whl Python 2, Python 3 none any Details

Total release size: 110.9 kB

Release files / task_processing-1.4.0.tar.gz

Download URL task_processing-1.4.0.tar.gz
Size 49.3 kB
Tags Source
SHA-256 checksum
How to use checksums
e246e65187f06d677f641c7ca7a4c0c982f5c4f9dc46b002b6181c3e23af7c03
BLAKE2b-256 checksum
How to use checksums
6f7f92d9147850e562126e1bb2ffa156f8b63e46db0a46cc1a952821d72a503b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.8.20

Release files / task_processing-1.4.0-py2.py3-none-any.whl

Download URL task_processing-1.4.0-py2.py3-none-any.whl
Size 61.6 kB
Tags Python 2 Python 3
SHA-256 checksum
How to use checksums
48143d1034fc28b0318aad97776e2a1c7bd1440ffd9e6fcf200768cc48e01dd0
BLAKE2b-256 checksum
How to use checksums
71240c32fdc2e37eda417033971060d8c3c5460aa6b5fae1c8e74c0b985bd524
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.8.20

Release history Release notifications | RSS feed

This release

1.4.0 This release

2 release files

1.3.5

2 release files

1.3.4

2 release files

1.3.3

2 release files

1.3.2

2 release files

1.3.1

2 release files

1.3.0

2 release files

1.2.0

2 release files

1.1.0

2 release files

1.0.0

2 release files

0.13.0

2 release files

0.12.1

2 release files

0.11.0

2 release files

0.10.1

2 release files

0.9.1

2 release files

0.9.0

2 release files

0.8.0

2 release files

0.7.0

2 release files

0.6.0

2 release files

0.5.0

2 release files

0.4.0

2 release files

0.3.0

2 release files

0.2.0

2 release files

0.1.26

2 release files

0.1.24

2 release files

0.1.23

2 release files

0.1.22

2 release files

0.1.21

2 release files

0.1.17

2 release files

0.1.16

2 release files

0.1.15

2 release files

0.1.14

2 release files

0.1.13

2 release files

0.1.9

2 release files

0.1.8

2 release files

0.1.7

2 release files

0.1.6

2 release files

0.1.5

2 release files

0.1.4

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

2 release files

0.0.17

2 release files

0.0.12

2 release files

0.0.11

2 release files

0.0.10

2 release files

0.0.9

2 release files

0.0.8

2 release files

0.0.7

2 release files

0.0.6

2 release files

0.0.5

2 release files

0.0.4

2 release files

0.0.3

2 release files

0.0.2

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page