# -*- mode: python -*- from datetime import timedelta from time import sleep from flowmetal import workflow, CancelledError, TimeoutError, Task def cancellable_activity(): try: while True: print("Still alive") sleep(0.5) except CancelledError: print("Task killed") @workflow def main(): # Somewhat like a thread t = Task(target=cancellable_activity, args=(), timeout=timedelta(minutes=5)) t.start() try: result = t.result(timeout=timedelta(seconds=3)) print(result) except TimeoutError: t.cancel()