prefect_base
Last updated
Last updated
https://docs.prefect.io/latest/
Prefectλ Python κΈ°λ° μν¬νλ‘ κ΄λ¦¬ μμ€ν μ λλ€. Prefectλ₯Ό μ¬μ©νλ©΄ λ‘κΉ , μ¬μλ, λμ 맀ν, μΊμ±, μ€ν¨ μλ¦Ό λ±μ λ°μ΄ν° νμ΄νλΌμΈμ μ½κ² μΆκ°ν μ μμ΅λλ€
https://discourse.prefect.io/t/what-are-the-components-of-prefect-2-0-architecture/909
Prefectλ Dask μμ ꡬμΆλμμΌλ©° Daskλ₯Ό μ¬μ©νμ¬ λΆμ° νκ²½μμ Prefect μν¬νλ‘μ μ€νμ μμ½νκ³ κ΄λ¦¬ν©λλ€.
Prefectλ μν¬νλ‘μ μΌμ μ μ²λ¦¬ νκ³ Daskλ κ° μν¬νλ‘ λ΄ μμ μ μΌμ λ° λ¦¬μμ€ κ΄λ¦¬λ₯Ό μ²λ¦¬ν©λλ€.
μμ μμ½: Daskλ μν¬νλ‘μ° λ΄μμ λͺ¨λ μμ μμ½μ μ²λ¦¬νλ―λ‘ Prefectλ Daskκ° λ°λ¦¬μ΄ λκΈ° μκ°μΌλ‘ μμ½νλ λ μμ μμ μ μ₯λ €ν μ μμ΅λλ€.
Dataflow: Daskκ° μμ κ°μ μ μ ν μ 보 μ§λ ¬ν λ° ν΅μ μ μ²λ¦¬νκΈ° λλ¬Έμ Prefectλ "λ°μ΄ν° νλ¦"μ μΌκΈ ν¨ν΄μΌλ‘ μ§μν μ μμ΅λλ€.
λΆμ° κ³μ°: Daskλ ν΄λ¬μ€ν°μ μμ μμκ² μμ ν λΉμ μ²λ¦¬νμ¬ μ¬μ©μκ° μ΅μνμ μ€λ²ν€λλ‘ λΆμ° κ³μ°μ μ΄μ μ μ¦μ μ€νν μ μλλ‘ ν©λλ€.
λ³λ ¬μ±: ν΄λ¬μ€ν°μμ μ€ννλ λ‘컬μμ μ€ννλ Daskλ μ λ°μμ λ³λ ¬ μμ μ€νμ μ 곡ν©λλ€.
λ°μ΄ν° νμ΄νλΌμΈμμ μ€μ λ‘ μνλλ μμ λ¨μμ λλ€. Taskλ λ¨μΌ μμ μ μννλ©°, λ€λ₯Έ Taskμ μμ‘΄νλ κ²½μ°κ° λ§μ΅λλ€.
μ λ ₯ λ°μ΄ν°λ₯Ό λ°μμ μΆλ ₯ λ°μ΄ν°λ₯Ό μμ±ν μ μμΌλ©°, μ€ν κ°λ₯ν μ½λλ‘ κ΅¬μ±λ©λλ€
name
Taskμ μ΄λ¦μ λλ€. μ΄λ¦μ μ§μ νμ§ μμΌλ©΄ ν¨μμ μ΄λ¦μ΄ μ¬μ©λ©λλ€.
description
Taskμ λν μ€λͺ μ λλ€. docstringμμ κ°μ Έμ΅λλ€.
tags
Taskμ λν νκ·Έμ λλ€. μ€νμ prefect.context.tagsμ μΆκ°λ©λλ€.
cache_key_fn
Task κ²°κ³Όλ₯Ό μΊμ±ν λ, κ²°κ³Όλ₯Ό μΊμνκΈ° μν ν€λ₯Ό μμ±νλ ν¨μμ λλ€. ν¨μλ kwargsλ₯Ό μΈμλ‘ λ°μ, λ¬Έμμ΄μ λ°νν©λλ€.
cache_expiration
Task κ²°κ³Ό μΊμμ λ§λ£ κΈ°κ°μ λλ€.
task_run_name
Task μ€νμ μ€ν μ΄λ¦μ λλ€. ν€μλ μΈμλ€μ λ³μλ‘ μ¬μ©νμ¬ μ΄λ¦μ μμ±ν©λλ€.
retries
Task μ€ν μ€ν¨μ μ¬μλ νμμ λλ€.
retry_delay_seconds
Task μ€ν μ€ν¨μ μ¬μλλ₯Ό λκΈ°νλ μκ°μ λλ€.
version
Taskμ λ²μ μ 보μ λλ€.
λ°μ΄ν° νμ΄νλΌμΈμ μ μνκ³ μ€ννκΈ°μν μΆμνλ κ°λ μ λλ€.
Prefect Flowλ λ¨μΌ νμ€ν¬ λλ μ¬λ¬ νμ€ν¬λ‘ ꡬμ±λ μ μμΌλ©°, μ΄λ¬ν νμ€ν¬λ μΌλ ¨μ νμ΄μ¬ ν¨μλ‘ μμ±λ©λλ€.
Flowλ λ€μν λ°μ΄ν° νμ΄νλΌμΈ ν¨ν΄μ μ§μν©λλ€.
description
Flowμ λν λ¬Έμμ΄ μ€λͺ μ μ λ ₯ν©λλ€. μ λ ₯νμ§ μμΌλ©΄ λ°μ½λ μ΄νΈλ ν¨μμ docstringμμ μ€λͺ μ κ°μ Έμ΅λλ€.
name
Flowμ μ΄λ¦μ μ λ ₯ν©λλ€. μ λ ₯νμ§ μμΌλ©΄ ν¨μμ μ΄λ¦μμ μΆλ‘ λ©λλ€.
retries
Flow μ€ν μ€ν¨ μ μ¬μλν νμλ₯Ό μ§μ ν©λλ€. κΈ°λ³Έκ°μ 0μ λλ€.
retry_delay_seconds
Flow μ€ν μ€ν¨ ν μ¬μλ μ λκΈ°ν μκ°μ μ§μ ν©λλ€. retriesκ° 0μ΄ μλ κ²½μ°μλ§ μ μ©λ©λλ€.
flow_run_name
Flow μ€ν μ΄λ¦μ μ§μ ν©λλ€. μ΄ μ΄λ¦μ Flow 맀κ°λ³μλ₯Ό λ³μλ‘ μ¬μ©νμ¬ λ¬Έμμ΄ ν νλ¦ΏμΌλ‘ μ 곡ν μ μμ΅λλ€. ν¨μλ₯Ό λ°ννλ ν¨μλ‘ μ 곡ν μλ μμ΅λλ€.
task_runner
Flow λ΄μμ task μ€νμ μ¬μ©ν task runnerλ₯Ό μ νν©λλ€. μ§μ νμ§ μμΌλ©΄ ConcurrentTaskRunnerκ° μ¬μ©λ©λλ€.
timeout_seconds
Flow μ΅λ μ€ν μκ°μ μ΄ λ¨μλ‘ μ§μ ν©λλ€. μ§μ λ μκ°μ΄ μ΄κ³Όλλ©΄ Flowκ° μ€ν¨λ‘ νμλ©λλ€. Flow μ€νμ λ€μ taskκ° νΈμΆλ λκΉμ§ κ³μλ©λλ€.
validate_parameters
Flow 맀κ°λ³μκ° Pydanticμ ν΅ν΄ κ²μ¦λλμ§ μ¬λΆλ₯Ό μ§μ ν©λλ€. κΈ°λ³Έκ°μ Trueμ λλ€.
version
Flow λ²μ μ μ§μ ν©λλ€. μ§μ νμ§ μμΌλ©΄ λνλ ν¨μκ° ν¬ν¨λ νμΌμ ν΄μ κ°μ μ΄μ©νμ¬ λ²μ μ μμ±νλ € μλν©λλ€. νμΌμ μ°Ύμ μ μλ κ²½μ° λ²μ μ nullμ΄ λ©λλ€.
λΈλ‘μ κ΅¬μ± μ μ₯μ νμ±ννκ³ μΈλΆ μμ€ν κ³Ό μνΈ μμ©νκΈ° μν μΈν°νμ΄μ€λ₯Ό μ 곡νλ Prefect λ΄μ κΈ°λ³Έ μμμ λλ€.
λΈλ‘μ μ¬μ©νλ©΄ AWS, GitHub, Slack λ° Prefectλ‘ μ€μΌμ€νΈλ μ΄μ νλ €λ κΈ°ν μμ€ν κ³Ό κ°μ μλΉμ€λ‘ μΈμ¦νκΈ° μν μ격 μ¦λͺ μ μμ νκ² μ μ₯ν μ μμ΅λλ€.
prefect λ΄λΆμμ Blockλ₯Ό λλ¬ λ€μν 컀λ₯ν°λ₯Ό νμΈν©λλ€.
Google Cloud Platform μ© Prefect 컀λ₯ν°λ₯Ό λ±λ‘ν©λλ€.
prefect block register -m prefect_gcp
Prefect built-in blocks
Azure
azure
Azure Datalake λ° Azure Blob Storageμμ νμΌλ‘ λ°μ΄ν°λ₯Ό μ μ₯νλ λΈλ‘μ λλ€.
Date Time
date-time
λ μ§ λ° μκ°μ λνλ΄λ λΈλ‘μ λλ€.
Docker Container]
docker-container
컨ν μ΄λμμ λͺ λ Ήμ μ€ννλ λΈλ‘μ λλ€.
Docker Registry
docker-registry
Docker λ μ§μ€νΈλ¦¬μ μ°κ²°νλ λΈλ‘μΌλ‘ Docker Engineμ μ°κ²°ν μ μμ΄μΌ ν©λλ€.
GCS
gcs
Google Cloud Storageμ νμΌλ‘ λ°μ΄ν°λ₯Ό μ μ₯νλ λΈλ‘μ λλ€.
GitHub
github
κ³΅κ° GitHub 리ν¬μ§ν 리μ μ μ₯λ νμΌκ³Ό μνΈ μμ©νλ λΈλ‘μ λλ€.
JSON
json
JSON λ°μ΄ν°λ₯Ό λνλ΄λ λΈλ‘μ λλ€.
Kubernetes Cluster Config
kubernetes-cluster-config
Kubernetes ν΄λ¬μ€ν°μ μνΈ μμ©νκΈ° μν ꡬμ±μ μ μ₯νλ λΈλ‘μ λλ€.
Kubernetes Job
kubernetes-job
Kubernetes JobμΌλ‘ λͺ λ Ήμ μ€ννλ λΈλ‘μ λλ€.
Local File System
local-file-system
λ‘컬 νμΌ μμ€ν μ νμΌλ‘ λ°μ΄ν°λ₯Ό μ μ₯νλ λΈλ‘μ λλ€
Microsoft Teams Webhook
ms-teams-webhook
μ 곡λ Microsoft Teams μΉν μ μ¬μ©νμ¬ μλ¦Όμ 보λ΄λ λΈλ‘μ λλ€.
Opsgenie Webhook
opsgenie-webhook
μ 곡λ Opsgenie μΉν μ μ¬μ©νμ¬ μλ¦Όμ 보λ΄λ λΈλ‘μ λλ€.
Pager Duty Webhook
pager-duty-webhook
μ 곡λ PagerDuty μΉν μ μ¬μ©νμ¬ μλ¦Όμ 보λ΄λ λΈλ‘μ λλ€.
Process
process
μ νλ‘μΈμ€μμ λͺ λ Ήμ μ€ννλ λΈλ‘μ λλ€.
Remote File System
remote-file-system
μ격 νμΌ μμ€ν μ νμΌλ‘ λ°μ΄ν°λ₯Ό μ μ₯νλ λΈλ‘μΌλ‘ fsspecμμ μ§μνλ λͺ¨λ μ격 νμΌ μμ€ν μ μ§μν©λλ€..
S3
s3
AWS S3μ νμΌλ‘ λ°μ΄ν°λ₯Ό μ μ₯νλ λΈλ‘μ λλ€.
Secret
secret
λΉλ° κ°μΌλ‘μ λ‘κ·Έλκ±°λ UIμ νμλ λ κ°λ €μ§λ λΈλ‘μ λλ€.
Slack Webhook
slack-webhook
μ 곡λ Slack μΉν μ μ¬μ©νμ¬ μλ¦Όμ 보λ΄λ λΈλ‘μ λλ€.
SMB
smb
SMB 곡μ μ νμΌλ‘ λ°μ΄ν°λ₯Ό μ μ₯νλ λΈλ‘μ λλ€.
String
string
λ¬Έμμ΄ λ°μ΄ν°λ₯Ό λνλ΄λ λΈλ‘μ λλ€.
Twilio SMS
twilio-sms
Twilio SMSλ₯Ό ν΅ν΄ μλ¦Όμ 보λ΄λ λΈλ‘μ λλ€.
Webhook
webhook
μΉν μ νΈμΆνλ λΈλ‘μ λλ€.
deploymentλ μ€νΈλ¦Όμ μΊ‘μννκ³ APIλ₯Ό ν΅ν΄ μΌμ μ μμ½νκ±°λ μμν μ μλ μλ² μΈ‘ μν°ν©νΈμ λλ€. flowλ μ¬λ¬ Deploymentμ μν μ μμΌλ©° νλ‘κ·Έλλ°νλ λ° νμν λͺ¨λ κ²μ΄ ν¬ν¨λ λ©νλ°μ΄ν°κ° μλ 컨ν μ΄λλΌκ³ λ§ν μ μμ΅λλ€. λͺ λ Ήμ€μ΄λ PythonμΌλ‘ λ§λ€ μ μμ΅λλ€.
Prefect μν¬νλ‘μ λν λ°°ν¬ μμ±μ Prefect APIλ₯Ό ν΅ν΄ μν¬νλ‘λ₯Ό κ΄λ¦¬νκ³ Prefect μμ΄μ νΈμμ μ격μΌλ‘ μ€νν μ μλλ‘ μν¬νλ‘ μ½λ, μ€μ λ° μΈνλΌ κ΅¬μ±μ ν¨ν€μ§νλ κ²μ μλ―Έν©λλ€.
Prefect CLI λλ UIλ₯Ό μ¬μ©νμ¬ μμ±, μ λ°μ΄νΈ, μ€μ§ λ° μμ ν μ μμ΅λλ€. Deploymentμ λν μν λ° λ‘κ·Έ μ 보λ Prefect Cloud λλ Prefect Server UIμμ λ³Ό μ μμΌλ©°, μνλ κ²½μ° λ€μ΄λ‘λνμ¬ κ²μ¬ν μ μμ΅λλ€.
Deploymentλ₯Ό μ¬μ©νλ©΄ Flowλ₯Ό μ½κ² μ€ννκ³ κ΄λ¦¬ν μ μμΌλ©°, μ½λ λ³κ²½μ΄λ μ λ°μ΄νΈλ₯Ό μ½κ² λ°μν μ μμ΅λλ€.
prefect deployment build parameterized_flows.py:etl_parent_flow -n "Parameterized ETL"
λ°°ν¬ κ²°κ³Όλ‘ yaml νμΌμ΄ μμ±λμμ΅λλ€.
https://docs.prefect.io/latest/
https://examples.dask.org/applications/prefect-etl.html