← スキル一覧に戻る

airflow-dag-patterns
by MGPowerlytics
⭐ 0🍴 0📅 2026年1月23日
SKILL.md
name: airflow-dag-patterns description: Best practices and conventions for creating and maintaining Airflow DAGs, including task naming, flow patterns, and error handling. version: 1.0.0
Airflow DAG Patterns
Main DAG Location
dags/multi_sport_betting_workflow.py - Unified workflow for all sports.
Task Naming Convention
Format: {action}_{sport}
Examples:
download_games_nbaupdate_elo_nhlidentify_bets_mlbplace_bets_nfl
Sports Configuration
Add/modify sports in SPORTS_CONFIG:
SPORTS_CONFIG = {
"nba": {
"elo_module": "nba_elo_rating",
"games_module": "nba_games",
"kalshi_function": "fetch_nba_markets",
"elo_threshold": 0.73,
},
# Add new sport here following same pattern
}
Task Flow Pattern
download_games → load_to_db → update_elo → fetch_markets → identify_bets → place_bets
Each sport runs independently in parallel.
Critical Rules
-
NEVER trigger manual DAG runs - Clear tasks and let Airflow schedule
-
Use PythonOperator for all tasks:
from airflow.providers.standard.operators.python import PythonOperator task = PythonOperator( task_id="update_elo_nba", python_callable=update_elo_ratings, op_kwargs={"sport": "nba"}, ) -
Handle failures gracefully - Don't let one sport block others:
task = PythonOperator( task_id="download_games_nba", python_callable=download_games, retries=3, retry_delay=timedelta(minutes=5), )
Adding a New Task
- Define function in DAG file or import from plugins
- Create PythonOperator with task_id following naming convention
- Set dependencies with
>>operator - Test DAG parsing:
python dags/multi_sport_betting_workflow.py
Common Imports
from airflow import DAG
from airflow.providers.standard.operators.python import PythonOperator
from datetime import datetime, timedelta
Default Args Pattern
default_args = {
"owner": "airflow",
"depends_on_past": False,
"email_on_failure": False,
"retries": 1,
"retry_delay": timedelta(minutes=5),
}
with DAG(
"multi_sport_betting_workflow",
default_args=default_args,
schedule="0 10 * * *", # 10 AM daily
start_date=datetime(2024, 1, 1),
catchup=False,
) as dag:
...
Files to Reference
dags/multi_sport_betting_workflow.py- Main DAGdags/portfolio_hourly_snapshot.py- Simpler DAG example
スコア
総合スコア
50/100
リポジトリの品質指標に基づく評価
✓SKILL.md
SKILL.mdファイルが含まれている
+20
○LICENSE
ライセンスが設定されている
0/10
○説明文
100文字以上の説明がある
0/10
○人気
GitHub Stars 100以上
0/15
○最近の活動
3ヶ月以内に更新がある
0/10
○フォーク
10回以上フォークされている
0/5
✓Issue管理
オープンIssueが50未満
+5
✓言語
プログラミング言語が設定されている
+5
○タグ
1つ以上のタグが設定されている
0/5
レビュー
💬
レビュー機能は近日公開予定です