Skip to main content

Zag (formerly TaskFlow)

Latest Version

A library to do [jobs, tasks, flows] in a highly available, easy to understand and declarative manner (and more!) to be used with OpenStack and other projects.

Why Fork?

Zag is a fork of OpenStack TaskFlow. Josh Harlow and others did an amazing job creating and maintaining TaskfFlow for many years, but it has languished for years with few updates. The worker-based engine and job board pieces of TaskFlow never got wide usage, so they remained stuck in a rather buggy, somewhat difficult-to-use state. The goals of Zag will be to focus on those pieces. Also, rather than trying to support a myriad of technologies that sort of fit the bill, it will focus on optimizing with the right technologies. So, to that end, the aims of Zag will be to do the following:

  • Focus on Zookeeper for distributed coordination. Support for others will be provided by the tooz library, but Zookeeper is really the best technology available for this purpose, so some features might not work with others.

  • Focus on RabbitMQ or other AMQP providers for worker communication. Support for others will be available via kombu, but some features will likely not work without the ability to use dead-letter queues to delay task execution or retries.

  • Reduce the cognitive load required to get Zag up and running. Simply posting a job in the job board in TaskFlow requires something like 50 lines of code and a rather in-depth understanding of how TaskFlow works under the covers.

  • Make writing flows simpler and more enjoyable. Adding a declarative syntax for building flows and simplifying how arguments are passed to tasks.

To accomplish those goals, some of the TaskFlow APIs will need to be refactored, and that would require breaking upstream users. So in the end, I opted to fork and change the name so we can push forward at a more rapid pace. This will be a work in progress for some time, so the initial releases will mostly keep things as-is. Over time, we’ll morph a few key pieces.

Testing and requirements

Requirements

Because this project has many optional (pluggable) parts like persistence backends and engines, we decided to split our requirements into two parts: - things that are absolutely required (you can’t use the project without them) are put into requirements.txt. The requirements that are required by some optional part of this project (you can use the project without them) are put into our test-requirements.txt file (so that we can still test the optional functionality works as expected). If you want to use the feature in question (eventlet or the worker based engine that uses kombu or the sqlalchemy persistence backend or jobboards which have an implementation built using kazoo …), you should add that requirement(s) to your project or environment.

Tox.ini

Our tox.ini file describes several test environments that allow to test Zag with different python versions and sets of requirements installed. Please refer to the tox documentation to understand how to make these test environments work for you.

Developer documentation

We also have sphinx documentation in docs/source.

To build it, run:

$ python setup.py build_sphinx

Metadata

Release files for zag 0.2.12

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

Source distribution (sdist)

Source distribution for zag 0.2.12
File Size Uploaded Provenance Actions
zag-0.2.12.tar.gz 1.1 MB Without provenance Details for zag-0.2.12.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for zag 0.2.12
File Interpreter ABI Platform Actions
zag-0.2.12-py2.py3-none-any.whl Python 2, Python 3 none any Details for zag-0.2.12-py2.py3-none-any.whl

Total release size: 1.6 MB

Release files / zag-0.2.12.tar.gz

Download URL zag-0.2.12.tar.gz
Size 1.1 MB
Tags Source
SHA-256 checksum
How to use checksums
baa0c4984a483b4476ab29e7fa6b936ef4c2af6968c6392ca28d74a1f0a18c0c
BLAKE2b-256 checksum
How to use checksums
b0a1e6b7720ad273a89da59981223025affe4e5ed3a89f14f93b590a004e47c7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.0.1 requests-toolbelt/0.9.1 tqdm/4.32.2 CPython/3.7.1

Release files / zag-0.2.12-py2.py3-none-any.whl

Download URL zag-0.2.12-py2.py3-none-any.whl
Size 504.7 kB
Tags Python 2 Python 3
SHA-256 checksum
How to use checksums
fc21acaf6995eea01be61235798f6097292d8b3536fb54d0495b7dda6513af69
BLAKE2b-256 checksum
How to use checksums
ccf8abb05601aaada0672c8d45d42ac867fc4316db3a7084f9d8333ad4c52275
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.0.1 requests-toolbelt/0.9.1 tqdm/4.32.2 CPython/3.7.1

Security for zag 0.2.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

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