Przejdź do treści
Biblioteka skilli
Programowanie · Budowanie i kod

python-async-ops

/python-async-ops

Stosuje wzorce asyncio w Python dla programowania współbieżnego: coroutines, gather, semaphore, TaskGroup, pętla zdarzeń i aiohttp.

Repozytorium
claude-mods ↗
Licencja
MIT
Ostatnia zmiana repozytorium
15.10.2026

Ocena i bezpieczeństwo

100/ 100Klasa: dobry
Format25 / 25
Frontmatter z nazwą i opisem, poprawna nazwa, opis do 1024 znaków, nazwa zgodna z folderem.
Odkrywalność25 / 25
Opis mówi, kiedy użyć skilla, ma sensowną długość i jest w 3. osobie.
Treść35 / 35
Co najmniej 150 słów i do 500 linii, nagłówki, listy kroków, przykłady albo kod.
Higiena15 / 15
Bez zaślepek typu TODO, bez ścieżek Windows, z licencją.
Ryzykobrak sygnałów w skanie
Pliki w paczce
10
Skrypty
2
Komentarze HTML
0
Adresy URL w SKILL.md
1
Przestarzałość

Brak sygnałów. Repozytorium zmienione 15.10.2026, bez odwołań do wycofanych modeli i API.

Licencja

MIT, otwarta: można używać i zmieniać, z zachowaniem informacji o autorze.

Co sprawdzić przed instalacją
  • 2 skrypty w paczce. Przejrzyj je przed instalacją, bo Claude może je uruchomić.

Skrypty: assets/async-project-template.py, scripts/find-blocking-calls.sh

Co robi i kiedy

Stosuje wzorce asyncio w Python dla programowania współbieżnego: coroutines, gather, semaphore, TaskGroup, pętla zdarzeń i aiohttp.

Oryginalny opis (EN)

Python asyncio patterns for concurrent programming. Triggers on: asyncio, async, await, coroutine, gather, semaphore, TaskGroup, event loop, aiohttp, concurrent.

Jak działa

  1. When to Use Async vs Sync
  2. Core Concepts
  3. Pattern 1: Concurrent with gather
  4. Pattern 2: Bounded Concurrency
  5. Pattern 3: TaskGroup (Python 3.11+)
  6. Pattern 4: Timeout
  7. Critical Warnings
  8. Quick Reference
  9. Async Context Manager
  10. Additional Resources
Sekcje z nagłówków SKILL.md, w oryginale · 167 linii, 531 słów
Podgląd SKILL.md
---
name: python-async-ops
description: "Python asyncio patterns for concurrent programming. Triggers on: asyncio, async, await, coroutine, gather, semaphore, TaskGroup, event loop, aiohttp, concurrent."
license: MIT
compatibility: "Python 3.10+ recommended. Some patterns require 3.11+ (TaskGroup, timeout)."
allowed-tools: "Read Write"
metadata:
  author: claude-mods
  depends-on: python-typing-ops
  related-skills: python-fastapi-ops, python-observability-ops
---

# Python Async Patterns

Asyncio patterns for concurrent Python programming.

## When to Use Async vs Sync

| Use Async When | Use Sync When |
|----------------|---------------|
| I/O-bound operations (HTTP, DB, files) | CPU-bound computations |
| High concurrency (100s+ connections) | Simple scripts, one-off tasks |
| WebSocket/streaming connections | Small data processing |
| Microservices with network calls | Single sequential operations |

**Decision tree:**
1. Is it CPU-bound? → Sync (or multiprocessing)
2. Is it I/O-bound with high concurrency? → Async
3. Is it simple I/O with few connections? → Sync is fine

## Core Concepts

```python
import asyncio

# Coroutine (must be awaited)
async def fetch(url: str) -> str:
    async with aiohttp.ClientSession() as session:
        async with session.get(url) as response:
            return await response.text()

# Entry point
async def main():
    result = await fetch("https://example.com")
    return result

asyncio.run(main())
```

## Pattern 1: Concurrent with gather

```python
async def fetch_all(urls: list[str]) -> list[str]:
    """Fetch multiple URLs concurrently."""
    async with aiohttp.ClientSession() as session:
        tasks = [fetch_one(session, url) for url in urls]
        return await asyncio.gather(*tasks, return_exceptions=True)
```

## Pattern 2: Bounded Concurrency

```python
async def fetch_with_limit(urls: list[str], limit: int = 10):
    """Limit concurrent requests."""
    semaphore = asyncio.Semaphore(limit)

    async def bounded_fetch(url):
        async with semaphore:
            return await fetch_one(url)

    return await asyncio.gather(*[bounded_fetch(url) for url in urls])
```

## Pattern 3: TaskGroup (Python 3.11+)

```python
async def process_items(items):
    """Structured concurrency with automatic cleanup."""
    async with asyncio.TaskGroup() as tg:
        for item in items:
            tg.create_task(process_one(item))
    # All tasks complete here, or exception raised
```

## Pattern 4: Timeout

```python
async def with_timeout():
    try:
        async with asyncio.timeout(5.0):  # Python 3.11+
            result = await slow_operation()
    except asyncio.TimeoutError:
        result = None
    return result
```

## Critical Warnings

```python
# WRONG - blocks event loop
async def bad():
    time.sleep(5)         # Never use time.sleep!
    requests.get(url)     # Blocking I/O!

# CORRECT
async def good():
    await asyncio.sleep(5)
    async with aiohttp.ClientSession() as s:
        await s.get(url)
```

```python
# WRONG - orphaned task
async def bad():
    asyncio.create_task(work())  # May be garbage collected!

# CORRECT - keep reference
async def good():
    task = asyncio.create_task(work())
    await task
```

## Quick Reference

| Pattern | Use Case |
|---------|----------|
| `gather(*tasks)` | Multiple independent operations |
| `Semaphore(n)` | Rate limiting, resource constraints |
| `TaskGroup()` | Structured concurrency (3.11+) |
| `Queue()` | Producer-consumer |
| `timeout(s)` | Timeout wrapper (3.11+) |
| `Lock()` | Shared mutable state |

## Async Context Manager

```python
from contextlib import asynccontextmanager

@asynccontextmanager
async def managed_connection():
    conn = await create_connection()
    try:
        yield conn
    finally:
        await conn.close()
```

## Additional Resources

For detailed patterns, load:
- `./references/concurrency-patterns.md` - Queue, Lock, producer-consumer
- `./references/aiohttp-patterns.md` - HTTP client/server patterns
- `./references/mixing-sync-async.md` - run_in_executor, thread pools
- `./references/debugging-async.md` - Debug mode, profiling, finding issues
- `./references/production-patterns.md` - Graceful shutdown, health checks, signal handling
- `./references/error-handling.md` - Retry with backoff, circuit breakers, partial failures
- `./references/performance.md` - uvloop, connection pooling, buffer sizing

## Scripts

- `./scripts/find-blocking-calls.sh` - Scan code for blocking calls in async functions

## Assets

- `./assets/async-project-template.py` - Production-ready async app skeleton

---

## See Also

**Prerequisites:**
- `python-typing-ops` - Type hints for async functions

**Related Skills:**
- `python-fastapi-ops` - Async web APIs
- `python-observability-ops` - Async logging and tracing
- `python-database-ops` - Async database access
Pliki w paczce (10)
  • SKILL.md 5 KB
  • assets/async-project-template.py 4 KB
  • references/aiohttp-patterns.md 6 KB
  • references/concurrency-patterns.md 6 KB
  • references/debugging-async.md 6 KB
  • references/error-handling.md 12 KB
  • references/mixing-sync-async.md 6 KB
  • references/performance.md 10 KB
  • references/production-patterns.md 10 KB
  • scripts/find-blocking-calls.sh 1 KB

Wersje

W bazie nie ma innych skilli o nazwie python-async-ops.

Migawka bazy z 13.11.2026 · wersja paczki 188935792ef0 (skrót SHA-256 całej paczki)

Pobrania w ostatnich 30 dniach: 0 · ranking

Zgłoś problem z tym skillem: szkodliwa treść, błędny opis albo prośba autora o usunięcie.

Podobne skille

  • 100python-async
    Stosuje wzorce asynchroniczne Python z asyncio i aiohttp dla współbieżności I/O, przy dodawaniu API async i debugowaniu kodu asynchronicznego.
  • 100python-asyncio-pitfalls
    Diagnozuje blokady pętli zdarzeń asyncio, wywołania blokujące w coroutines, wybór gather lub TaskGroup, anulowanie, mieszanie kodu sync i async oraz ostrzeżenia o zniszczonych zadaniach.
  • 100async-python-patterns
    Dostarcza wzorce asyncio i programowania współbieżnego w Pythonie dla wydajnych aplikacji: asynchroniczne API, systemy współbieżne i aplikacje I/O bez blokowania.
  • 100async-python-patterns
    Dostarcza wzorce asyncio i programowania współbieżnego w Pythonie dla wydajnych aplikacji: asynchroniczne API, systemy współbieżne i aplikacje I/O bez blokowania.
  • 100async-python-patterns
    Dostarcza wzorce asyncio i programowania współbieżnego w Pythonie dla wydajnych aplikacji: asynchroniczne API, systemy współbieżne i aplikacje I/O bez blokowania.
  • 95python-async-patterns
    Pokazuje wzorce asyncio i async/await dla aplikacji I/O, API i systemów współbieżnych.

Uwagi i zgłoszenia

Wiadomość trafi do Bartosza Sokolińskiego. Adres e-mail jest potrzebny tylko do odpowiedzi. Szczegóły w polityce prywatności.