Asynchronous Tasks support

Registered by Renat Akhmerov

We need a capability to run asynchronous tasks in TaskFlow. The asynchronous nature of a task means that we can execute the task in two steps:
* Start task. This step may include various kinds of initialization and pre-processing.
* Submit task result via TaskFlow public API. At this point task is considered done and flow goes on.

See https://etherpad.openstack.org/p/async-taskflow-tasks

Blueprint information

Status:
Complete
Approver:
Joshua Harlow
Priority:
Medium
Drafter:
None
Direction:
Approved
Assignee:
None
Definition:
Obsolete
Series goal:
None
Implementation:
Unknown
Milestone target:
None
Completed by
Joshua Harlow

Related branches

Sprints

Whiteboard

I think this can be done simply by letting as task raise a Delayed() exception. This will cause the active engine to finish what it is doing and then suspend itself, at this point the responsibility for resuming the engine and populating the storage with the finished result is up to the user of taskflow. Then the user of taskflow can resume the engine on there own time and use the engines features to resume as they would normally do. There then is no need for submitting a task to some public API, since its not the responsibility of taskflow to submit tasks to (the user of taskflow does this at there own time).

Gerrit topic: https://review.openstack.org/#q,topic:bp/async-tasks,n,z

Addressed by: https://review.openstack.org/84277
    Add a way to signal that tasks are delayed

(?)

Work Items

This blueprint contains Public information 
Everyone can see this information.

Subscribers

No subscribers.