def test_signals_creates_correct_states_for_looped(): with pytest.raises(Exception) as exc: raise LOOP("signal") assert isinstance(exc.value, LOOP) assert type(exc.value.state) is Looped assert exc.value.state.result == repr(exc.value) assert exc.value.state.message == "signal"
def looper(): if (prefect.context.get("task_loop_count") == 2 and prefect.context.get("task_run_count", 1) == 1): raise ValueError("Stop") if prefect.context.get("task_loop_count", 1) < 3: raise LOOP(result=prefect.context.get("task_loop_result", 0) + 10) return prefect.context.get("task_loop_result")
def open_csv(filename: str): print(filename) with open(filename) as read_obj: csv_reader = reader(read_obj) # Get all rows of csv from csv_reader object as list of tuples return list(map(tuple, csv_reader)) raise LOOP(message)
def loop_test(): loop_payload = prefect.context.get("task_loop_result", {}) n = loop_payload.get("n", 1) print(n) if n > 5: return n raise LOOP(f'Iteration {n}', result=dict(n=n+1))
def fizz_buzz(N): loop_payload = context.get("task_loop_result", {}) n = loop_payload.get("n", N) out = requests.get( f"http://fibuzzapi.herokuapp.com/api/numbers?offset={n}&limit=1").json( )["numbers"][0]["value"] if n == 1: return out raise LOOP(message=f"{n}={out}", result=dict(n=n - 1))
def compute_large_fibonacci(M): # we extract the accumulated task loop result from context loop_payload = prefect.context.get("task_loop_result", {}) n = loop_payload.get("n", 1) fib = loop_payload.get("fib", 1) next_fib = requests.post("https://nemo.api.stdlib.com/[email protected]/", data={ "nth": n }).json() if next_fib > M: return fib # return statements end the loop raise LOOP(message=f"Fib {n}={next_fib}", result=dict(n=n + 1, fib=next_fib))
def looper(x): if prefect.context.get("task_loop_count", 1) < 20: raise LOOP(result=prefect.context.get("task_loop_result", 0) + x) return prefect.context.get("task_loop_result", 0) + x
def looper(): if prefect.context.get("task_loop_count", 1) < 3: raise LOOP() return 42