Jump to: navigation, search

TaskFlow/Engines

< TaskFlow
Revision as of 00:27, 14 October 2013 by Harlowja (talk | contribs) (Engine)

Engine

Engines are what really runs your tasks and flows.

4StrokeEngine Ortho 3D Small Mini.gif

An engine takes a flow structure (described by patterns) and uses it to decide which task to run and when.

There may be different implementation of engines. Some may be easier to use (like, require no setup) and understand, others might require more complicated setup but provide better scalability. The idea and ideal is that deployers of a service that uses taskflow can select an engine that suites their setup best without modifying the code of said service. This allows for that deployer to start off using a simpler implementation and scaling out the service that is powered by taskflow as the service grows. In concept, all engines should implement the same interface to make it easy to replace one engine with another, and provide the same guarantees on how patterns are interpreted -- for example, if an engine runs a linear flow, the tasks should be run one after another in order no matter what type of engine is actually running that linear flow.

Note: engines might have different capabilities/configuration but overall the interface will remain the same and should be transparent.

Supported Types

Distributed

When you want your applications tasks and flows to be performed in a system that is highly available & resilient to individual failure.

See: DistributedTaskManagement and Celery for more details.

Demo: http://www.youtube.com/watch?v=SJLc3U-KYxQ

Traditional

When you want your tasks and flows to just run inside your applications existing framework and still take advantage of the functionality offered.

Supports the following:

  • Threaded engine using a thread based executor.
  • Threaded engine using a provided eventlet greenthread based executor.
  • Single threaded engine using no threads.

How

Blueprint: https://blueprints.launchpad.net/taskflow/+spec/patterns-and-engines

Blueprint: https://blueprints.launchpad.net/taskflow/+spec/distributed-celery

Blueprint: https://blueprints.launchpad.net/taskflow/+spec/eventlet-engine