céleri - Tâches devant être exécutées en priorité
Dans mon site web, les utilisateurs peuvent mettre à JOUR elles profil (manuel) à chaque fois qu'il veut, ou automatique une fois par jour.
Cette tâche est distribué avec le céleri maintenant.
Mais j'ai un "problème" :
Chaque jour, dans la mise à jour automatique, un travail de mettre TOUS les utilisateurs (+-6k utilisateurs) sur la file d'attente:
from celery import group
from tasks import *
import datetime
from lastActivityDate.models import UserActivity
today = datetime.datetime.today()
one_day = datetime.timedelta(days=5)
today -= one_day
print datetime.datetime.today()
user_list = UserActivity.objects.filter(last_activity_date__gte=today)
g = group(update_user_profile.s(i.user.auth.username) for i in user_list)
print datetime.datetime.today()
print g(user_list.count()).get()
Si quelqu'un essaie de faire la mise à jour manuelle, ils entreront sur te la file d'attente et durer éternellement à être exécuté.
Est-il un moyen de régler ce manuel tâche à exécuter dans un piority?
Ou faire un dédié pour chaque file d'attente séparées: manuel et automatique?
source d'informationauteur fabriciols
Vous devez vous connecter pour publier un commentaire.
Céleri ne prend pas en charge la priorité de la tâche. (v3.0)
http://docs.celeryproject.org/en/master/faq.html#does-celery-support-task-priorities
Vous pouvez résoudre ce problème en tâches de routage.
http://docs.celeryproject.org/en/latest/userguide/routing.html
Préparer par défaut et priority_high File d'attente.
Exécuter deux démon.
Et l'itinéraire de la tâche.