TaskFlow is a Python library that helps to make task execution easy, consistent and reliable. 
If you are just getting started or looking for an overview please visit: http://wiki.openstack.org/wiki/TaskFlow which provides better introductory material, description of high level goals and related content.
- Atoms, tasks and retries
- Arguments and results
- Inputs and outputs
- Notifications and listeners
While developing TaskFlow the team has worked hard to make sure the various concepts are explained by relevant examples. Here are a few selected examples to get started (ordered by perceived complexity):
- Hello world
- Passing values from and to tasks
- Using listeners
- Using listeners (to watch a phone call)
- Dumping a in-memory backend
- Making phone calls
- Making phone calls (automatically reverting)
- Building a car
- Iterating over the alphabet (using processes)
- Watching execution timing
- Distance calculator
- Table multiplier (in parallel)
- Linear equation solver (explicit dependencies)
- Linear equation solver (inferred dependencies)
- Linear equation solver (in parallel)
- Creating a volume (in parallel)
- Summation mapper(s) and reducer (in parallel)
- Sharing a thread pool executor (in parallel)
- Storing & emitting a bill
- Suspending a workflow & resuming
- Creating a virtual machine (resumable)
- Creating a volume (resumable)
- Running engines via iteration
- Controlling retries using a retry controller
- Distributed execution (simple)
- Distributed notification (simple)
- Distributed mandelbrot (complex)
- Jobboard producer/consumer (simple)
- Conductor simulating a CI pipeline
- Conductor running 99 bottles of beer song requests
If the examples provided are not satisfactory (or up to your standards) contributions are welcome and very much appreciated to help improve them. The higher the quality and the clearer the examples are the better and more useful they are for everyone.
Things to consider before (and during) development and integration with TaskFlow into your project:
- Read over the paradigm shifts and engage the team in IRC (or via the
openstack-dev mailing list) if these need more explanation (prefix
[Oslo][TaskFlow]to your emails subject to get an even faster response).
- Follow (or at least attempt to follow) some of the established best practices (feel free to add your own suggested best practices).
- Keep in touch with the team (see above); we are all friendly and enjoy knowing your use cases and learning how we can help make your lives easier by adding or adjusting functionality in this library.
A useful collection of links, documents, papers, similar projects, frameworks and libraries.
Please feel free to submit your own additions and/or changes.