2011-09-24 4 views
6

J'utilise un site Web Django où j'utilise Celery pour implémenter la mise en cache préventive - c'est-à-dire que je calcule et cache les résultats avant même qu'ils ne soient demandés par l'utilisateur. Cependant, une de mes tâches de céleri pourrait, dans certains cas, être appelée beaucoup (je dirais plus rapide qu'elle ne l'est en moyenne, en fait). Je voudrais le limiter afin qu'il ne consomme pas beaucoup de ressources quand ce n'est pas vraiment utile.Comment est-ce que rate_limit est appliqué dans Celery?

Cependant, je voudrais d'abord comprendre comment l'attribut célery.task.base.Task.rate_limit de Celery est appliqué. Les tâches sont-elles refusées? Sont-ils retardés et exécutés plus tard?

Merci d'avance!

Répondre

16

Les tâches à débit limité ne sont jamais supprimées, elles sont mises en file d'attente en interne dans l'agent de sorte qu'elles s'exécutent dès qu'elles sont autorisées à s'exécuter.

L'algorithme de seau à jetons ne spécifie rien sur la suppression de paquets (c'est une option, mais Celery ne le fait pas).

Questions connexes