========== Examples ========== 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): To explore more of these examples please check out the `examples`_ directory in the TaskFlow `source tree`_. .. note:: 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. .. _examples: https://opendev.org/openstack/taskflow/src/branch/master/taskflow/examples .. _source tree: https://opendev.org/openstack/taskflow/ Hello world =========== .. note:: Full source located at :example:`hello_world`. .. literalinclude:: ../../../taskflow/examples/hello_world.py :language: python :linenos: :lines: 16- Passing values from and to tasks ================================ .. note:: Full source located at :example:`simple_linear_pass`. .. literalinclude:: ../../../taskflow/examples/simple_linear_pass.py :language: python :linenos: :lines: 16- Using listeners =============== .. note:: Full source located at :example:`echo_listener`. .. literalinclude:: ../../../taskflow/examples/echo_listener.py :language: python :linenos: :lines: 16- Using listeners (to watch a phone call) ======================================= .. note:: Full source located at :example:`simple_linear_listening`. .. literalinclude:: ../../../taskflow/examples/simple_linear_listening.py :language: python :linenos: :lines: 16- Dumping a in-memory backend =========================== .. note:: Full source located at :example:`dump_memory_backend`. .. literalinclude:: ../../../taskflow/examples/dump_memory_backend.py :language: python :linenos: :lines: 16- Making phone calls ================== .. note:: Full source located at :example:`simple_linear`. .. literalinclude:: ../../../taskflow/examples/simple_linear.py :language: python :linenos: :lines: 16- Making phone calls (automatically reverting) ============================================ .. note:: Full source located at :example:`reverting_linear`. .. literalinclude:: ../../../taskflow/examples/reverting_linear.py :language: python :linenos: :lines: 16- Building a car ============== .. note:: Full source located at :example:`build_a_car`. .. literalinclude:: ../../../taskflow/examples/build_a_car.py :language: python :linenos: :lines: 16- Iterating over the alphabet (using processes) ============================================= .. note:: Full source located at :example:`alphabet_soup`. .. literalinclude:: ../../../taskflow/examples/alphabet_soup.py :language: python :linenos: :lines: 16- Watching execution timing ========================= .. note:: Full source located at :example:`timing_listener`. .. literalinclude:: ../../../taskflow/examples/timing_listener.py :language: python :linenos: :lines: 16- Distance calculator =================== .. note:: Full source located at :example:`distance_calculator` .. literalinclude:: ../../../taskflow/examples/distance_calculator.py :language: python :linenos: :lines: 16- Table multiplier (in parallel) ============================== .. note:: Full source located at :example:`parallel_table_multiply` .. literalinclude:: ../../../taskflow/examples/parallel_table_multiply.py :language: python :linenos: :lines: 16- Linear equation solver (explicit dependencies) ============================================== .. note:: Full source located at :example:`calculate_linear`. .. literalinclude:: ../../../taskflow/examples/calculate_linear.py :language: python :linenos: :lines: 16- Linear equation solver (inferred dependencies) ============================================== ``Source:`` :example:`graph_flow.py` .. literalinclude:: ../../../taskflow/examples/graph_flow.py :language: python :linenos: :lines: 16- Linear equation solver (in parallel) ==================================== .. note:: Full source located at :example:`calculate_in_parallel` .. literalinclude:: ../../../taskflow/examples/calculate_in_parallel.py :language: python :linenos: :lines: 16- Creating a volume (in parallel) =============================== .. note:: Full source located at :example:`create_parallel_volume` .. literalinclude:: ../../../taskflow/examples/create_parallel_volume.py :language: python :linenos: :lines: 16- Summation mapper(s) and reducer (in parallel) ============================================= .. note:: Full source located at :example:`simple_map_reduce` .. literalinclude:: ../../../taskflow/examples/simple_map_reduce.py :language: python :linenos: :lines: 16- Sharing a thread pool executor (in parallel) ============================================ .. note:: Full source located at :example:`share_engine_thread` .. literalinclude:: ../../../taskflow/examples/share_engine_thread.py :language: python :linenos: :lines: 16- Storing & emitting a bill ========================= .. note:: Full source located at :example:`fake_billing` .. literalinclude:: ../../../taskflow/examples/fake_billing.py :language: python :linenos: :lines: 16- Suspending a workflow & resuming ================================ .. note:: Full source located at :example:`resume_from_backend` .. literalinclude:: ../../../taskflow/examples/resume_from_backend.py :language: python :linenos: :lines: 16- Creating a virtual machine (resumable) ====================================== .. note:: Full source located at :example:`resume_vm_boot` .. literalinclude:: ../../../taskflow/examples/resume_vm_boot.py :language: python :linenos: :lines: 16- Creating a volume (resumable) ============================= .. note:: Full source located at :example:`resume_volume_create` .. literalinclude:: ../../../taskflow/examples/resume_volume_create.py :language: python :linenos: :lines: 16- Running engines via iteration ============================= .. note:: Full source located at :example:`run_by_iter` .. literalinclude:: ../../../taskflow/examples/run_by_iter.py :language: python :linenos: :lines: 16- Controlling retries using a retry controller ============================================ .. note:: Full source located at :example:`retry_flow` .. literalinclude:: ../../../taskflow/examples/retry_flow.py :language: python :linenos: :lines: 16- Distributed execution (simple) ============================== .. note:: Full source located at :example:`wbe_simple_linear` .. literalinclude:: ../../../taskflow/examples/wbe_simple_linear.py :language: python :linenos: :lines: 16- Distributed notification (simple) ================================= .. note:: Full source located at :example:`wbe_event_sender` .. literalinclude:: ../../../taskflow/examples/wbe_event_sender.py :language: python :linenos: :lines: 16- Distributed mandelbrot (complex) ================================ .. note:: Full source located at :example:`wbe_mandelbrot` Output ------ .. image:: img/mandelbrot.png :height: 128px :align: right :alt: Generated mandelbrot fractal Code ---- .. literalinclude:: ../../../taskflow/examples/wbe_mandelbrot.py :language: python :linenos: :lines: 16- Jobboard producer/consumer (simple) =================================== .. note:: Full source located at :example:`jobboard_produce_consume_colors` .. literalinclude:: ../../../taskflow/examples/jobboard_produce_consume_colors.py :language: python :linenos: :lines: 16- Conductor simulating a CI pipeline ================================== .. note:: Full source located at :example:`tox_conductor` .. literalinclude:: ../../../taskflow/examples/tox_conductor.py :language: python :linenos: :lines: 16- Conductor running 99 bottles of beer song requests ================================================== .. note:: Full source located at :example:`99_bottles` .. literalinclude:: ../../../taskflow/examples/99_bottles.py :language: python :linenos: :lines: 16-