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