Pular para o conteúdo
Skillpedia
APIs e servidores (backend)41 mil · #4922

async-python-patterns

Faz seu agente usar programação assíncrona e concorrência em Python. É útil para criar aplicações rápidas e que lidam com muitas operações ao mesmo tempo.

O que ela faz

Ajuda a criar programas de computador mais rápidos e eficientes usando Python. Ele permite que o programa faça várias coisas ao mesmo tempo sem travar, especialmente quando precisa esperar por algo (como dados da internet).

Quando usar

  • ✓Criar sites ou aplicativos que precisam responder rapidamente.
  • ✓Baixar muitas informações da internet de uma vez.
  • ✓Fazer o programa esperar por algo sem parar todo o resto.

Exemplo do que pedir para a IA

“Como faço para meu programa Python baixar várias páginas da web ao mesmo tempo?”

Quer saber mais? Abra as seções abaixo.

Como usar

O jeito mais fácil: copie a mensagem abaixo e cole no Claude, ChatGPT, Cursor ou outra IA. Ela lê a skill e segue as instruções.

Link da skill

https://github.com/wshobson/agents/blob/main/plugins/python-development/skills/async-python-patterns/SKILL.md

Mensagem pronta para colar

Use esta skill para me ajudar: https://github.com/wshobson/agents/blob/main/plugins/python-development/skills/async-python-patterns/SKILL.md Leia o arquivo SKILL.md desse link e siga as instruções dele na minha tarefa.
Como funciona

Ele usa um 'loop de eventos' para gerenciar tarefas. Quando uma tarefa precisa esperar, o loop passa para outra. As funções especiais `async` e `await` ajudam a organizar essas pausas e retomadas.

Instalação

Jeito mais fácil: copie o link da skill e cole no Claude, ChatGPT ou Cursor pedindo para seguir as instruções.

No terminal (Claude Code, Codex, Cursor), na pasta do projeto:

npx skills add wshobson/agents --skill async-python-patterns

Ou baixe só o arquivo:

curl -L https://raw.githubusercontent.com/wshobson/agents/main/plugins/python-development/skills/async-python-patterns/SKILL.md -o SKILL.md
Conteúdo técnico (SKILL.md)

Tradução do texto original do autor no GitHub. Os comandos e códigos estão como no original.

Padrões Async em Python

Orientação abrangente para implementar aplicações Python assíncronas usando asyncio, padrões de programação concorrente e async/await para construir sistemas de alta performance e não bloqueantes.

Quando Usar Esta Habilidade

  • Construir APIs web assíncronas (FastAPI, aiohttp, Sanic)
  • Implementar operações de I/O concorrentes (banco de dados, arquivo, rede)
  • Criar web scrapers com requisições concorrentes
  • Desenvolver aplicações em tempo real (servidores WebSocket, sistemas de chat)
  • Processar múltiplas tarefas independentes simultaneamente
  • Construir microsserviços com comunicação assíncrona
  • Otimizar cargas de trabalho limitadas por I/O
  • Implementar tarefas e filas assíncronas em segundo plano

Guia de Decisão Sync vs Async

Antes de adotar o async, considere se é a escolha certa para o seu caso de uso.

Caso de Uso Abordagem Recomendada
Muitas chamadas de rede/DB concorrentes asyncio
Computação limitada por CPU multiprocessing ou thread pool
Mistura de I/O + CPU Descarregar trabalho de CPU com asyncio.to_thread()
Scripts simples, poucas conexões Sync (mais simples, mais fácil de depurar)
APIs web com alta concorrência Frameworks Async (FastAPI, aiohttp)

Regra Chave: Mantenha-se totalmente sync ou totalmente async dentro de um caminho de chamada. Misturar cria bloqueios ocultos e complexidade.

Conceitos Principais

1. Event Loop

O event loop é o coração do asyncio, gerenciando e agendando tarefas assíncronas.

Características chave:

  • Multitarefa cooperativa single-threaded
  • Agenda corrotinas para execução
  • Lida com operações de I/O sem bloquear
  • Gerencia callbacks e futures

2. Corrotinas

Funções definidas com async def que podem ser pausadas e retomadas.

Sintaxe:

async def my_coroutine():
    result = await some_async_operation()
    return result

3. Tarefas (Tasks)

Corrotinas agendadas que rodam concorrentemente no event loop.

4. Futures

Objetos de baixo nível representando resultados eventuais de operações assíncronas.

5. Gerenciadores de Contexto Async

Recursos que suportam async with para limpeza adequada.

6. Iteradores Async

Objetos que suportam async for para iterar sobre fontes de dados assíncronas.

Início Rápido

import asyncio

async def main():
    print("Hello")
    await asyncio.sleep(1)
    print("World")

# Python 3.7+
asyncio.run(main())

Padrões Fundamentais

Padrão 1: Async/Await Básico

import asyncio

async def fetch_data(url: str) -> dict:
    """Fetch data from URL asynchronously."""
    await asyncio.sleep(1)  # Simulate I/O
    return {"url": url, "data": "result"}

async def main():
    result = await fetch_data("https://api.example.com")
    print(result)

asyncio.run(main())

Padrão 2: Execução Concorrente com gather()

import asyncio
from typing import List

async def fetch_user(user_id: int) -> dict:
    """Fetch user data."""
    await asyncio.sleep(0.5)
    return {"id": user_id, "name": f"User {user_id}"}

async def fetch_all_users(user_ids: List[int]) -> List[dict]:
    """Fetch multiple users concurrently."""
    tasks = [fetch_user(uid) for uid in user_ids]
    results = await asyncio.gather(*tasks)
    return results

async def main():
    user_ids = [1, 2, 3, 4, 5]
    users = await fetch_all_users(user_ids)
    print(f"Fetched {len(users)} users")

asyncio.run(main())

Padrão 3: Criação e Gerenciamento de Tarefas

import asyncio

async def background_task(name: str, delay: int):
    """Long-running background task."""
    print(f"{name} started")
    await asyncio.sleep(delay)
    print(f"{name} completed")
    return f"Result from {name}"

async def main():
    # Create tasks
    task1 = asyncio.create_task(background_task("Task 1", 2))
    task2 = asyncio.create_task(background_task("Task 2", 1))

    # Do other work
    print("Main: doing other work")
    await asyncio.sleep(0.5)

    # Wait for tasks
    result1 = await task1
    result2 = await task2

    print(f"Results: {result1}, {result2}")

asyncio.run(main())

Padrão 4: Tratamento de Erros em Código Async

import asyncio
from typing import List, Optional

async def risky_operation(item_id: int) -> dict:
    """Operação que pode falhar."""
    await asyncio.sleep(0.1)
    if item_id % 3 == 0:
        raise ValueError(f"Item {item_id} falhou")
    return {"id": item_id, "status": "success"}

async def safe_operation(item_id: int) -> Optional[dict]:
    """Wrapper com tratamento de erros."""
    try:
        return await risky_operation(item_id)

…
Perguntas frequentes

Qual a diferença entre 'sync' e 'async'?

'Sync' (síncrono) é como fazer uma fila: uma coisa de cada vez. 'Async' (assíncrono) é como ter vários garçons: eles pegam pedidos, levam para a cozinha e atendem outras mesas enquanto esperam, sem parar tudo.

O que é 'coroutine'?

É uma função especial em Python (marcada com `async def`) que pode ser pausada e retomada, permitindo que o programa faça outras coisas enquanto ela espera.

Quando NÃO devo usar 'async'?

Se o seu programa faz muitos cálculos pesados (em vez de esperar por internet/disco), usar 'async' pode não ajudar e até complicar. Nesses casos, outras técnicas podem ser melhores.

Detalhes

Descrição original do autor

Master Python asyncio, concurrent programming, and async/await patterns for high-performance applications. Use when building async APIs, concurrent systems, or I/O-bound applications requiring non-blocking operations.

repo: wshobson/agents

Popularidade

Estrelas no GitHub
41 mil
Posição no ranking
#4922
Licença
MIT
Atualizada em
15/10/2026

Essa skill é útil?

0

Entre para votar.

Comentários

  • …

Mais skills deste repositório

Skills parecidas