Celery takenresultaten die na uitvoering worden opgeslagen in de backend kunnen, als ze te lang blijven staan, opslagcapaciteit in beslag nemen en de prestaties beïnvloeden. Django-celery-beat en Celery bieden elk opties om de backend-gegevens op hun eigen manier op te ruimen om dit probleem aan te pakken. In dit artikel zullen we `CELERY_TASK_RESULT_EXPIRES` instelling en de celery.backend_cleanup taak van Django-celery-beat onderzoeken, en aanbevelingen doen voor het gebruik van beide instellingen.
1. CELERY_TASK_RESULT_EXPIRES
: optie voor het instellen van de vervalperiode van takenresultaten
CELERY_TASK_RESULT_EXPIRES
is een optie waarmee kan worden ingesteld hoe lang de resultaten van individuele taken in de backend blijven staan, gemeten in seconden. Deze instelling werkt als TTL (Time-To-Live) wanneer Celery-taken in de backend worden gepland, waardoor de resultaten automatisch na de opgegeven tijd worden verwijderd.
- Instellingenvoorbeeld:
CELERY_TASK_RESULT_EXPIRES = 86400 # 24 uur (in seconden)
- Met deze instelling worden de takenresultaten automatisch na 24 uur uit de backend verwijderd. De TTL-instelling is nuttig voor het aanpassen van de vervalperiode per taak, zodat er zich geen onnodige gegevens in de backend ophopen.
2. celery.backend_cleanup van Django-celery-beat: periodieke opruimtaak
Als je Django-celery-beat gebruikt, zorgt de celery.backend_cleanup
taak ervoor dat ouderen takenresultaten in de backend periodiek worden opgeruimd. Deze opruimtaak is standaard ingesteld om eenmaal per dag te worden uitgevoerd en kan in Django Admin worden aangepast, zodat deze vaker of minder vaak wordt uitgevoerd. De periodieke opruimtaak voorkomt automatisch dat oudere gegevens zich in de backend ophopen, zelfs zonder TTL-instelling.
- Instellingsevoorbeeld voor de frequentie: In Django Admin kun je de frequentie van
celery.backend_cleanup
aanpassen; als er veel realtime-gegevens zijn, kun je deze korter instellen, en anders blijf je bij de standaardinstelling (een dag).
3. Conclusie: welke instelling moet je kiezen?
CELERY_TASK_RESULT_EXPIRES
en celery.backend_cleanup
bieden overlappingen in functionaliteit, waardoor het voldoende is om slechts één van beide te gebruiken voor het beheer van het geheugen in de backend. Afhankelijk van de behoefte kunnen beide instellingen echter ook geactiveerd worden.
- Als je Django-celery-beat gebruikt: de
celery.backend_cleanup
taak zorgt ervoor dat de backend periodiek opruimt, dus het is meestal voldoende om deze opruimingstaak in te plannen zonder TTL-instelling. - Als je Celery-taken met code plant: Als je geen Django-celery-beat gebruikt en zelf de taakplanningscode schrijft, wordt aanbevolen om
CELERY_TASK_RESULT_EXPIRES
in te stellen om TTL te beheren. Dit zorgt ervoor dat de resultaten van elke taak automatisch na de ingestelde tijd worden verwijderd, waardoor het geheugen in de backend efficiënt wordt beheerd.
Samenvatting: Met alleen ofwel de opruimtaak van Django-celery-beat of de TTL-instelling kan er effectief worden omgegaan met backendbeheer. Voor gebruikers van Django-celery-beat is het inplannen van de opruimtaak geschikt, terwijl het voor handmatige takenplanning wordt aangeraden om de TTL-instelling te gebruiken. Beide instellingen kunnen ook samen worden gebruikt voor gedetailleerd databeheer.

댓글이 없습니다.