[openstack-dev] TaskFlow 0.7.0 released

Joshua Harlow harlowja at outlook.com
Mon Feb 2 18:56:27 UTC 2015


The Oslo team is pleased to announce the release of:

TaskFlow 0.7.0: taskflow structured state management library.

For more details, please see the git log history below and:

http://launchpad.net/taskflow/+milestone/0.7.0

Please report issues through launchpad:

http://bugs.launchpad.net/taskflow/

Noteable changes
----------------

* Using non-deprecated oslo.utils and oslo.serialization imports.
* Added note(s) about publicly consumable types into docs.
* Increase robustness of WBE producer/consumers by supporting and using
   the kombu provided feature to retry/ensure on transient/recoverable
   failures (such as timeouts).
* Move the jobboard/job bases to a jobboard/base module and
   move the persistence base to the parent directory (standardizes how
   all pluggable types now have a similiar base module in a similar 
location,
   making the layout of taskflow's codebase easier to understand/follow).
* Add executor statistics, using taskflow.futures executors now provides a
   useful feature to know about the following when using these executors.
   --------------------------
   | Statistic | What it is |
   -------------------------------------------------------------------------
   | failures  | How many submissions ended up raising exceptions          |
   | executed  | How many submissions were executed (failed or not)        |
   | runtime   | Total runtime of all submissions executed (failed or not) |
   | cancelled | How many submissions were cancelled before executing      |
   -------------------------------------------------------------------------
* The taskflow logger module does not provide a logging adapter [bug]
* Use monotonic time when/if available for stopwatches (py3.3+ natively
   supports this) and other time.time usage (where the usage of 
time.time only
   cares about the duration between two points in time).
* Make all/most usage of type errors follow a similar pattern (exception
   cleanup).

Changes in /homes/harlowja/dev/os/taskflow 0.6.1..0.7.0
-------------------------------------------------------

NOTE: Skipping requirement commits...

19f9674 Abstract out the worker finding from the WBE engine
99b92ae Add and use a nicer kombu message formatter
df6fb03 Remove duplicated 'do' in types documentation
43d70eb Use the class defined constant instead of raw strings
344b3f6 Use kombu socket.timeout alias instead of socket.timeout
d5128cf Stopwatch usage cleanup/tweak
2e43b67 Add note about publicly consumable types
e9226ca Add docstring to wbe proxy to denote not for public use
80888c6 Use monotonic time when/if available
7fe2945 Link WBE docs together better (especially around arguments)
f3a1dcb Emit a warning when no routing keys provided on publish()
802bce9 Center SVG state diagrams
97797ab Use importutils.try_import for optional eventlet imports
84d44fa Shrink the WBE request transition SVG image size
ca82e20 Add a thread bundle helper utility + tests
e417914 Make all/most usage of type errors follow a similar pattern
2f04395 Leave use-cases out of WBE developer documentation
e3e2950 Allow just specifying 'workers' for WBE entrypoint
66fc2df Add comments to runner state machine reaction functions
35745c9 Fix coverage environment
fc9cb88 Use explicit WBE worker object arguments (instead of kwargs)
0672467 WBE documentation tweaks/adjustments
55ad11f Add a WBE request state diagram + explanation
45ef595 Tidy up the WBE cache (now WBE types) module
1469552 Fix leftover/remaining 'oslo.utils' usage
93d73b8 Show the failure discarded (and the future intention)
5773fb0 Use a class provided logger before falling back to module
addc286 Use explicit WBE object arguments (instead of kwargs)
342c59e Fix persistence doc inheritance hierarchy
072210a The gathered runtime is for failures/not failures
410efa7 add clarification re parallel engine
cb27080 Increase robustness of WBE producer/consumers
bb38457 Move implementation(s) to there own sections
f14ee9e Move the jobboard/job bases to a jobboard/base module
ac5345e Have the serial task executor shutdown/restart its executor
426484f Mirror the task executor methods in the retry action
d92c226 Add back a 'eventlet_utils' helper utility module
1ed0f22 Use constants for runner state machine event names
bfc1136 Remove 'SaveOrderTask' and test state in class variables
22eef96 Provide the stopwatch elapsed method a maximum
3968508 Fix unused and conflicting variables
2280f9a Switch to using 'oslo_serialization' vs 'oslo.serialization'
d748db9 Switch to using 'oslo_utils' vs 'oslo.utils'
9c15eff Add executor statistics
bf2f205 Use oslo.utils reflection for class name
9fe99ba Add split time capturing to the stop watch
42a665d Use platform neutral line separator(s)
eb536da Create and use a multiprocessing sync manager subclass
4c756ef Use a single sender
778e210 Include the 'old_state' in all currently provided listeners
c07a96b Update the README.rst with accurate requirements
2f7d86a Include docstrings for parallel engine types/strings supported
0d602a8 The taskflow logger module does not provide a logging adapter
96e6d97 Send in the prior atom state on notification of a state change
a588e48 Pass a string as executor in the example instead of an executor
a18a939 Fix for job consumption example using wrong object
1d84fdd Add edge labels for engine states
d0edb62 Move the persistence base to the parent directory
84b387f Rework the in-memory backend

Diffstat (except docs and test files)
-------------------------------------

README.rst                                         |   29 +-
requirements-py2.txt                               |    4 +-
requirements-py3.txt                               |    4 +-
setup.cfg                                          |    1 +
taskflow/atom.py                                   |    5 +-
taskflow/engines/action_engine/actions/base.py     |   42 +
taskflow/engines/action_engine/actions/retry.py    |   80 +-
taskflow/engines/action_engine/actions/task.py     |   43 +-
taskflow/engines/action_engine/compiler.py         |    2 +-
taskflow/engines/action_engine/engine.py           |   45 +-
taskflow/engines/action_engine/executor.py         |   60 +-
taskflow/engines/action_engine/runner.py           |  143 ++-
taskflow/engines/action_engine/runtime.py          |    5 +-
taskflow/engines/action_engine/scheduler.py        |    3 +-
taskflow/engines/helpers.py                        |    4 +-
taskflow/engines/worker_based/cache.py             |   48 -
taskflow/engines/worker_based/dispatcher.py        |   57 +-
taskflow/engines/worker_based/endpoint.py          |    2 +-
taskflow/engines/worker_based/engine.py            |    9 +-
taskflow/engines/worker_based/executor.py          |  170 +--
taskflow/engines/worker_based/protocol.py          |   48 +-
taskflow/engines/worker_based/proxy.py             |  156 ++-
taskflow/engines/worker_based/server.py            |   51 +-
taskflow/engines/worker_based/types.py             |  234 +++++
taskflow/engines/worker_based/worker.py            |   39 +-
taskflow/examples/alphabet_soup.py                 |   28 +-
taskflow/examples/build_a_car.py                   |   17 +-
taskflow/examples/create_parallel_volume.py        |    2 +-
taskflow/examples/echo_listener.py                 |   56 +
taskflow/examples/fake_billing.py                  |    8 +-
taskflow/examples/hello_world.py                   |    9 +-
taskflow/examples/parallel_table_multiply.py       |    4 +-
taskflow/examples/resume_many_flows.py             |    2 +-
taskflow/examples/resume_vm_boot.py                |    8 +-
taskflow/examples/simple_linear_listening.py       |    7 +-
taskflow/examples/wbe_event_sender.py              |    4 +-
taskflow/examples/wbe_mandelbrot.py                |    2 +-
taskflow/exceptions.py                             |   10 +-
taskflow/flow.py                                   |    2 +-
taskflow/jobs/backends/impl_zookeeper.py           |   64 +-
taskflow/jobs/base.py                              |  297 ++++++
taskflow/jobs/job.py                               |  111 --
taskflow/jobs/jobboard.py                          |  206 ----
taskflow/listeners/base.py                         |   21 +-
taskflow/listeners/claims.py                       |    4 +-
taskflow/listeners/logging.py                      |   60 +-
taskflow/persistence/backends/base.py              |  126 ---
taskflow/persistence/backends/impl_dir.py          |   12 +-
taskflow/persistence/backends/impl_memory.py       |  223 ++--
taskflow/persistence/backends/impl_sqlalchemy.py   |   16 +-
taskflow/persistence/backends/impl_zookeeper.py    |   14 +-
taskflow/persistence/backends/sqlalchemy/models.py |    6 +-
taskflow/persistence/base.py                       |  126 +++
taskflow/persistence/logbook.py                    |   66 +-
taskflow/storage.py                                |    8 +-
taskflow/task.py                                   |    2 +-
taskflow/types/cache.py                            |   17 +-
taskflow/types/failure.py                          |   15 +-
taskflow/types/fsm.py                              |    2 +-
taskflow/types/futures.py                          |  213 +++-
taskflow/types/graph.py                            |    3 +-
taskflow/types/latch.py                            |   15 +-
taskflow/types/notifier.py                         |    2 +-
taskflow/types/periodic.py                         |  179 ++++
taskflow/types/table.py                            |   12 +-
taskflow/types/timing.py                           |  187 +++-
taskflow/types/tree.py                             |    4 +-
taskflow/utils/async_utils.py                      |   11 +-
taskflow/utils/deprecation.py                      |    2 +-
taskflow/utils/eventlet_utils.py                   |   34 +
taskflow/utils/kazoo_utils.py                      |    5 +-
taskflow/utils/kombu_utils.py                      |   73 ++
taskflow/utils/misc.py                             |   83 +-
taskflow/utils/persistence_utils.py                |   11 +-
taskflow/utils/threading_utils.py                  |  104 ++
test-requirements.txt                              |    2 +-
tools/generate_states.sh                           |    4 +
tools/state_graph.py                               |   43 +-
tox.ini                                            |    1 +
122 files changed, 4704 insertions(+), 2295 deletions(-)

Requirements updates
--------------------

diff --git a/requirements-py2.txt b/requirements-py2.txt
index e142007..083caec 100644
--- a/requirements-py2.txt
+++ b/requirements-py2.txt
@@ -29,2 +29,2 @@ jsonschema>=2.0.0,<3.0.0
-oslo.utils>=1.1.0                       # Apache-2.0
-oslo.serialization>=1.0.0               # Apache-2.0
+oslo.utils>=1.2.0                       # Apache-2.0
+oslo.serialization>=1.2.0               # Apache-2.0
diff --git a/requirements-py3.txt b/requirements-py3.txt
index d827a17..b04fc0a 100644
--- a/requirements-py3.txt
+++ b/requirements-py3.txt
@@ -23,2 +23,2 @@ jsonschema>=2.0.0,<3.0.0
-oslo.utils>=1.1.0                       # Apache-2.0
-oslo.serialization>=1.0.0               # Apache-2.0
+oslo.utils>=1.2.0                       # Apache-2.0
+oslo.serialization>=1.2.0               # Apache-2.0
diff --git a/test-requirements.txt b/test-requirements.txt
index 96ab944..293ec5d 100644
--- a/test-requirements.txt
+++ b/test-requirements.txt
@@ -27 +27 @@ kazoo>=1.3.1
-alembic>=0.7.1
+alembic>=0.7.2



More information about the OpenStack-dev mailing list