Support async dans Celery 5
Celery 5.0, publié en septembre 2020, abandonne Python 2 et introduit un support expérimental des tâches asynchrones. Les workers peuvent exécuter des coroutines async def directement, bénéficiant de l'I/O non bloquant pour les tâches liées au réseau.
Tâche async
python
from celery import Celery
import httpx
app = Celery('tasks', broker='redis://localhost:6379/0')
@app.task
async def fetch_url(url: str) -> str:
"""Tâche async : récupère une URL sans bloquer."""
async with httpx.AsyncClient() as client:
response = await client.get(url)
return response.text[:200]
# Appel identique aux tâches sync
result = fetch_url.delay('https://example.com')
print(result.get(timeout=10))
