# Concurrency, Pools और Priorities — Apache Airflow: Data Pipelines का Orchestration

Source: https://www.geekswithgeeks.com/hi/airflow/ops-concurrency

> साझा systems की रक्षा के लिए parallelism सीमित करें और महत्वपूर्ण काम को प्राथमिकता दें।

## Database पर भगदड़ न मचाएँ

Airflow एक साथ कई tasks चला सकता है, जो किसी स्रोत database या API पर बोझ डाल सकता है। इसे कई स्तरों पर नियंत्रित करें: `max_active_runs` (एक DAG के समवर्ती runs), `max_active_tasks` (DAG के भीतर समवर्ती tasks), `parallelism` (वैश्विक सीमा), और **pools**, slots के नामित समूह। किसी एक नाज़ुक system को छूने वाले सारे tasks को, मान लें, 3 slots वाले pool में रखें; अतिरिक्त tasks queue में इंतज़ार करते हैं। Slots कम हों तो `priority_weight` महत्वपूर्ण tasks को पहले जाने देता है।

## Task में pool, और विचार अंकों में

Task कोड एक pool देता है। उसके बाद का छोटा मॉडल (यहाँ चलाया) 3 slots वाला pool दिखाता है जिसमें 3 चल रहे हैं और 2 queue में हैं।

```python
# in the DAG:
# BashOperator(task_id="export_a", bash_command="...", pool="source_db", priority_weight=5)

pool = 3; running = ["a", "b", "c"]; queued = ["d", "e"]
print(f"running {len(running)}/{pool}, queued {len(queued)}")
```

Output:

```
running 3/3, queued 2
```

## Pools code review में बनाएँ

Pool के नाम और आकार को डिज़ाइन का हिस्सा मानें: दस्तावेज़ीकृत करें कि हर एक किस system की रक्षा करता है, और उनमें बदलावों की किसी अन्य configuration की तरह समीक्षा करें।

**Quiz:** Pool क्या करता है?

- [ ] XComs रखता है
- [x] सीमित करता है कि एक साझा संसाधन को एक साथ कितने tasks उपयोग करें
- [ ] Connections encrypt करता है
- [ ] DAGs का नाम बदलता है

*Answer:* सीमित करता है कि एक साझा संसाधन को एक साथ कितने tasks उपयोग करें. Pools DAGs भर में सीमित संसाधन का समवर्ती उपयोग सीमित करते हैं।
