Onafhankelijke vergelijking · geen betaalde rankings
Home / Blog / Technisch / Celery: voorkom dat een takenwachtrij een black box wordt

Celery: voorkom dat een takenwachtrij een black box wordt

Celery accepteert opdrachten en vergeet ze vervolgens als niemand wachtrijen, dode werknemers en taken die vastzitten in stille nieuwe pogingen in de gaten houdt.

Redactie Hébergeurs.eu 5 min Bijgewerkt 19 jul. 2026

Marketing lanceert een e-mailcampagne naar 50.000 contacten. De interface antwoordt “gepland verzenden”. Drie uur later: 200 e-mails verzonden. Flower is niet toegankelijk, de Redis e-mailwachtrij toont 48.000 openstaande berichten en PDF-exportwerkers monopoliseren de pool sinds de ochtendcron. Niemand waarschuwde voor de diepte van de lijn – Celery “liep”, de banen wachtten in het donker.

Selderij ontkoppelt asynchroon – het beweegt de zichtbaarheid. Zonder brokermonitoring, beleid voor opnieuw proberen en bestandsscheiding hebt u een langzaam HTTP-verzoek vervangen door een onzichtbare achterstand die de kantooruren later verpest.

Waarneembare architectuur

OnderdeelRol in waarneembaarheid
MakelaarWachtrijdiepte, publicatiesnelheid
WerknemersCompetitie, prefetch
BloemInterface voor actieve en mislukte taken
Backend-resultatendjango-selderij-resultaten in basis
Statistiekenselderij_export naar Prometheus

Minimale waarschuwingen:

  • wachtrijlengte > 1000 gedurende tien minuten
  • Piekfoutpercentage bij taken
  • Afwezigheid van hartslagwerker

Een taak zonder maximale vertraging neemt een werknemer in beslag totdat hij opnieuw wordt opgestart.

Gezonde taken configureren


@app.task(bind=Waar, max_retries=3, standaard_retry_delay=60,

          soft_time_limit=300, time_limit=360)

def send_campaign(self, batch_id):

    ...

  • acks_late=True: bevestiging na succes — vraag of de werker crasht tijdens de taak.
  • reject_on_worker_lost afhankelijk van de makelaar.
  • Routing: grote opdrachten naar de zware wachtrij, e-mails naar snel.

Prefetch: worker_prefetch_multiplier=1 voor lange taken — voorkomt dat een werknemer de wachtrij monopoliseert.

Dode wachtrij en storingsinspectie

Na maximale pogingen:

  • Bewaar uitzonderingen en argumenten in de basis (django-celery-results).
  • Breng het operationele team op de hoogte via een speciaal kanaal met de nodige context om correct te herstarten.
  • Zorg voor een beheerdersinterface om na correctie handmatig opnieuw op te starten.

Doe niet 'voor altijd opnieuw proberen': een vergiftigd bericht blokkeert een slot voor onbepaalde tijd.

Makelaar en hosting

Redis broker: eenvoudig, vaak op een dedicated Redis VPS; AOF-persistentie als de berichten niet verdwijnen bij het opnieuw opstarten.

RabbitMQ: geavanceerde routing, meer operationele overhead.

Selderijwerkers werken in afzonderlijke processen van Gunicorn – vaak op dezelfde VPS voor een klein project, op een tweede machine als de belasting toeneemt. Er zijn maar weinig managed hosts die native Celery aanbieden: je beheert werknemers op VPS of cloud.

Voor geplande taken die Celery voeden, verwijzen we naar cron betrouwbaar en Gunicorn nginx.

De top: Celery zonder dashboard, het is een leugenachtige cron

Dit is wat “de taak via Celery is gegaan” in de vergadering verbergt.

Criteria voor het einde van het werk voor een Celery-taak: metriek van de wachtrijdiepte, waarschuwing en gedocumenteerde procedure voor opnieuw in de wachtrij plaatsen — niet alleen de @shared_task-decorateur.

Beslis en ga vooruit zonder blinde vlek

In een dag tijd kun je Celery waarneembaar maken zonder de hele architectuur te herzien:

  1. Implementeer Flower of een Prometheus-exporteur voor productie, niet alleen voor de ontwikkelomgeving waar niemand 's nachts naar de bestanden kijkt.
  2. Verdeel de wachtrijen op basis van kritiekheid en duur (transactionele e-mails, zware exports, nachtelijk onderhoud) zodat een lange taak een dringende verzending niet blokkeert.
  3. Pas doorlooptijden en maximale pogingen toe op alle bestaande taken, inclusief de taken die twee jaar geleden zijn geschreven.
  4. Configureer een waarschuwing wanneer de wachtrijdiepte gedurende tien tot vijftien opeenvolgende minuten een drempel overschrijdt.
  5. Test waarbij een medewerker abrupt wordt gestopt midden in een taak en controleer of het bericht terugkeert naar de wachtrij.
  6. Document wie een geblokkeerde wachtrij opnieuw start, binnen welk tijdsbestek en met welke controleprocedure na het opnieuw opstarten.

Vergelijk VPS geschikt voor werknemers via de overzicht en de vergelijker.

Veelgestelde vragen

Hoe weet ik of Celery-taken zich opstapelen?

Controleer de wachtrijlengte van makelaars met de juiste opdrachten (bijvoorbeeld LLEN op Redis of de RabbitMQ-beheerinterface), Flower-dashboard en gereserveerde of actieve taakstatistieken. Stel een waarschuwing in als de diepte langer dan vijftien minuten hoog blijft. De site kan 200 OK reageren terwijl duizenden vacatures wachten zonder dat het zakelijke team het ziet.

Wat te doen met herhaaldelijk mislukte taken?

Stel een dode wachtrij in, schakel task_acks_late in met een maximaal aantal pogingen en een progressieve back-off, en sla vervolgens fouten op in een inspecteerbare database zoals django-celery-results. Begin nooit voor onbepaalde tijd opnieuw: een vergiftigde boodschap monopoliseert een werknemer. Corrigeer de hoofdoorzaak voordat u massaal opnieuw opstart vanuit de beheerinterface.

Redis of RabbitMQ als makelaar?

Redis is dankzij het installatiegemak geschikt voor het MKB en kleine projecten. RabbitMQ neemt het over wanneer routering complex is, berichtpersistentie van cruciaal belang is of meerdere consumenten bestanden delen met fijnmazige regels. In beide gevallen moet u het geheugen van de brokerserver en de berichtpersistentie bij herstarts controleren.

Hoeveel Celery-werknemers?

Grootte van toegewezen pools per bestandstype, bijvoorbeeld -Q e-mails,exports, in plaats van één enkele pool. Zware exporten mogen niet dezelfde pool delen als transactionele e-mails, anders zou een dringende verzending twee uur kunnen wachten na een pdf-proces van tien minuten.


Celery transparant toont de wachtrij - De zwarte doos van Celery vult deze terwijl de site 200 OK reageert.

Vergelijk Europese providers

Filter op compliance, locatie en gebruikssituatie — open daarna de fiches om het echte bereik te controleren.

Blader door het overzicht
Blog

Gerelateerde lectuur

Alle artikelen →