# prefectの使い方 Flow関数の中で、Prefectの @task が付いた関数を呼び出すことで、処理単位(タスク)を組み合わせて実行します。 ## コンポ―ネート ### @flow Prefectにおける「ワークフロー(全体の処理のまとまり)」 を定義するデコレータです。 Pythonの関数を「フロー関数(Flow Function)」に変えます。 ```py @flow def etl_flow(d: str | None = None): d = d or date.today().isoformat() load(transform(extract(d))) ``` タスクの呼び出しががわかりにくいので分解すると以下になる ```py @flow def etl_flow(d=None): d = d or date.today().isoformat() # load(transform(extract(d))) raw = extract(d) clean = transform(raw) load(clean) ``` ### @task Prefectが管理する個々の処理単位(タスク)を定義します。 通常のPython関数にリトライやログ管理、 依存関係管理などを付けられる。 ```py @task(retries=3, retry_delay_seconds=10) def extract(d): return f"raw({d})" ``` * retries: * 最大3回リトライ * retry_delay_seconds: * 失敗したら10秒待って再試行という「実行単位」