--- tags: - taskflow - "#openstack" --- ```python import time import contextlib from taskflow.patterns import linear_flow as lf from taskflow import task, engines from taskflow.persistence import backends, models from taskflow.exceptions import NotFound class PrintAndWait(task.Task): def execute(self, *args, **kwargs): print(self.name) time.sleep(10) return self.name def logbook_and_flow_detail(backend, id): conn = backend.get_connection() try: logbook = conn.get_logbook(id) flow_detail = logbook.find(id) except NotFound: logbook = models.LogBook("printer_log", uuid=id) flow_detail = models.FlowDetail("cool flow", uuid=id) logbook.add(flow_detail) with contextlib.closing(backend.get_connection()) as conn: conn.upgrade() conn.save_logbook(logbook) return logbook, flow_detail def create_flow(): main_flow = lf.Flow("main_flow") for i in range(10): main_flow.add(PrintAndWait(name=f"print_n_wait_{i}")) return main_flow def main(): backend = backends.fetch(conf=dict(connection="sqlite:///test.db")) logbook, flow_detail = logbook_and_flow_detail(backend, "1") flow = create_flow() eng = engines.load(flow, flow_detail=flow_detail, backend=backend, book=logbook) eng.run() if __name__ == "__main__": main() ```