django-celery
Ajuda seu agente a configurar e gerenciar tarefas assíncronas em aplicações Django usando Celery. Isso é útil para adicionar trabalhos em segundo plano ou tarefas agendadas.
O que ela faz
Esta ferramenta ajuda a adicionar tarefas que rodam em segundo plano ou em horários específicos para um site feito com Django. Ela permite que seu site continue funcionando rápido enquanto tarefas demoradas, como enviar emails ou gerar relatórios, são feitas sem atrapalhar o usuário.
Quando usar
- ✓Quando você precisa enviar emails em massa sem travar o site.
- ✓Para criar tarefas que se repetem, como gerar um relatório todo dia.
- ✓Para fazer operações demoradas sem que o usuário precise esperar.
Exemplo do que pedir para a IA
“Como faço para meu site enviar um email para todos os usuários cadastrados sem que eles precisem ficar esperando a página carregar?”
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
Mensagem pronta para colar
Como funciona
Ela usa um sistema chamado Celery para gerenciar essas tarefas. Você define o que a tarefa deve fazer e o Celery cuida de executá-la em outro lugar, sem sobrecarregar o site principal.
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 affaan-m/ECC --skill django-celeryOu baixe só o arquivo:
curl -L https://raw.githubusercontent.com/affaan-m/ECC/main/pi/core/skills/django-celery/SKILL.md -o SKILL.mdConteú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 de Tarefas Assíncronas com Django + Celery
Padrões de nível de produção para processamento de tarefas em segundo plano no Django usando Celery com Redis ou RabbitMQ.
Quando Ativar
- Adicionar jobs em segundo plano ou processamento assíncrono a um app Django
- Implementar tarefas periódicas/agendadas
- Descarregar operações lentas (e-mail, geração de PDF, chamadas de API) do ciclo de requisição
- Configurar Celery Beat para agendamento semelhante ao cron
- Depurar falhas de tarefas, novas tentativas ou filas acumuladas
- Escrever testes para tarefas Celery
Configuração do Projeto
Instalação
pip install 'celery[redis]' django-celery-results django-celery-beat
celery.py — Ponto de Entrada do App
# config/celery.py
import os
from celery import Celery
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'config.settings.development')
app = Celery('myproject')
app.config_from_object('django.conf:settings', namespace='CELERY')
app.autodiscover_tasks() # Discovers tasks.py in each INSTALLED_APP
@app.task(bind=True, ignore_result=True)
def debug_task(self):
print(f'Request: {self.request!r}')
# config/__init__.py
from .celery import app as celery_app
__all__ = ('celery_app',)
Configurações do Django
# config/settings/base.py
# Broker (Redis recommended for production)
CELERY_BROKER_URL = env('CELERY_BROKER_URL', default='redis://localhost:6379/0')
CELERY_RESULT_BACKEND = env('CELERY_RESULT_BACKEND', default='django-db')
# Serialization
CELERY_ACCEPT_CONTENT = ['json']
CELERY_TASK_SERIALIZER = 'json'
CELERY_RESULT_SERIALIZER = 'json'
# Task behavior
CELERY_TASK_TRACK_STARTED = True
CELERY_TASK_TIME_LIMIT = 30 * 60 # Hard limit: 30 min
CELERY_TASK_SOFT_TIME_LIMIT = 25 * 60 # Soft limit: sends SoftTimeLimitExceeded
CELERY_WORKER_PREFETCH_MULTIPLIER = 1 # Prevent worker hoarding long tasks
CELERY_TASK_ACKS_LATE = True # Re-queue on worker crash
# Result persistence
CELERY_RESULT_EXPIRES = 60 * 60 * 24 # Keep results 24 hours
# Beat scheduler (for periodic tasks)
CELERY_BEAT_SCHEDULER = 'django_celery_beat.schedulers:DatabaseScheduler'
# Installed apps
INSTALLED_APPS += [
'django_celery_results',
'django_celery_beat',
]
Executando Workers
# Start worker (development)
celery -A config worker --loglevel=info
# Start beat scheduler (periodic tasks)
celery -A config beat --loglevel=info --scheduler django_celery_beat.schedulers:DatabaseScheduler
# Combined worker + beat (dev only, never production)
celery -A config worker --beat --loglevel=info
# Production: multiple workers with concurrency
celery -A config worker --loglevel=warning --concurrency=4 -Q default,high_priority
Padrões de Design de Tarefas
Tarefa Básica
# apps/notifications/tasks.py
from celery import shared_task
import logging
logger = logging.getLogger(__name__)
@shared_task(name='notifications.send_welcome_email')
def send_welcome_email(user_id: int) -> None:
"""Send welcome email to newly registered user."""
from apps.users.models import User
from apps.notifications.services import EmailService
try:
user = User.objects.get(pk=user_id)
except User.DoesNotExist:
logger.warning('send_welcome_email: user %s not found', user_id)
return # Idempotent — do not raise, task already impossible to complete
EmailService.send_welcome(user)
logger.info('Welcome email sent to user %s', user_id)
Tarefa com Nova Tentativa
@shared_task(
bind=True,
name='integrations.sync_to_crm',
max_retries=5,
default_retry_delay=60, # seconds before first retry
autoretry_for=(ConnectionError, TimeoutError),
retry_backoff=True, # exponential backoff
retry_backoff_max=600, # cap at 10 minutes
retry_jitter=True, # randomise to avoid thundering herd
)
def sync_contact_to_crm(self, contact_id: int) -> dict:
"""Sync contact to external CRM with retry on transient failures."""
from apps.crm.services import CRMClient
try:
result = CRMClient().sync(contact_id)
return result
except CRMClient.RateLimitError as exc:
# Specific retry delay from response header
raise self.retry(exc=exc, countdown=int(exc.retry_after))
Padrão de Tarefa Idempotente
Projete tarefas para que possam ser executadas várias vezes com as mesmas entradas de forma segura:
@shared_task(name='orders.mark_shipped')
def mark_order_shipped(order_id: int, tracking_number: str) -> None:
…
Perguntas frequentes
O que são tarefas em segundo plano?
São ações que o site precisa fazer, mas que não precisam acontecer imediatamente ou que podem demorar. Exemplos incluem enviar emails, processar imagens ou gerar relatórios.
O que é Django?
Django é uma estrutura (framework) que ajuda a construir sites e aplicações web de forma mais rápida e organizada.
O que é Celery?
Celery é uma ferramenta que permite executar tarefas em segundo plano de forma assíncrona, ou seja, sem que elas bloqueiem o funcionamento normal do seu programa.
Detalhes
Descrição original do autor
Django + Celery async task patterns — configuration, task design, beat scheduling, retries, canvas workflows, monitoring, and testing. Use when adding background jobs, scheduled tasks, or async processing to a Django app.
repo: affaan-m/ECC
Popularidade
- Estrelas no GitHub
- 280 mil
- Posição no ranking
- #43
- Licença
- MIT
- Atualizada em
- 15/10/2026
Comentários
- …
Mais skills deste repositório
accessibility
Ajuda seu agente a criar interfaces que todos possam usar. Garante que sites e aplicativos funcionem bem para pessoas com deficiência, como cegos ou com mobilidade reduzida.
affaan-m/ECC
agent-architecture-audit
Faz seu agente verificar se tudo está funcionando corretamente. Ele encontra e conserta problemas em sistemas de IA, garantindo que funcionem como esperado.
affaan-m/ECC
agent-eval
Ajuda seu agente a comparar diferentes ferramentas de programação de IA. Ele mede qual é mais rápido, barato e confiável para realizar tarefas específicas.
affaan-m/ECC
agent-harness-construction
Faz seu agente entender melhor como realizar tarefas. Ele otimiza as ferramentas e instruções que o agente usa para aumentar suas chances de sucesso.
affaan-m/ECC
Skills parecidas
api-and-interface-design
Ajuda a criar APIs e interfaces bem definidas. É útil ao projetar como diferentes partes de um software vão se comunicar.
addyosmani/agent-skills
mason
Ajuda seu agente a escrever código limpo e funcional. Ele segue as regras definidas para garantir que tudo funcione como esperado.
sickn33/agentic-awesome-skills
max
Faz seu agente melhorar o código existente sem mudar o que ele faz. Ele deixa o código mais fácil de ler e manter.
sickn33/agentic-awesome-skills