Django-fr

Forum

#1 06-04-2015 01:20:09

Alone9
Membre
Inscription : 29-08-2014
Messages : 32

[Aide] Celery

Salut,

alors après avoir lu plusieurs doc et tuto sur Celery je ne comprends toujours pas, j'ai vraiment du mal avec ce module. Si quelqu'un pouvait m'expliquer comment je peux faire avec les fonctions que je cherche à créer, ce serait vachement cool.
J'ai un système de room de jeu qui créer des dictionnaires, une fois une room créer des utilisateurs entre dans celle-ci, et une fois la partie fini je voudrais que la room soit supprimer 5 minutes après. Il peut y avoir plusieurs rooms.
Et ma deuxième, serait un modèle qui enregistre le nombre de pièce de l'utilisateur, une fois que trois pièce sont utilisé l'utilisateur devient membre Gold pour 3 jours puis redeviens membre Silver si aucune pièce est utiliser pendant c'est 3 jours.

Hors ligne

#2 07-04-2015 10:10:09

Xavier Ordoquy
Administrateur
Lieu : Puteaux, France
Inscription : 12-10-2011
Messages : 312
Site Web

Re : [Aide] Celery

Il faut appeler apply_async() avec l'option countdown (cf la doc).

Hors ligne

#3 14-04-2015 23:46:55

Alone9
Membre
Inscription : 29-08-2014
Messages : 32

Re : [Aide] Celery

Merci j'ai réussi ma première tache.

Mais je bloque encore sur la deuxième, comment faire une tache pouvant se réinitialiser si elle reçoit une valeur dans les 3 jours qui suivent et si elle n'en reçoit pas la tache s'exécute. Sans bloquer les taches des autres modèles.

Dernière modification par Alone9 (14-04-2015 23:48:18)

Hors ligne

#4 15-04-2015 11:34:06

Xavier Ordoquy
Administrateur
Lieu : Puteaux, France
Inscription : 12-10-2011
Messages : 312
Site Web

Re : [Aide] Celery

Il faut faire le test dans ta fonction de timeout.

Si la condition n'a été réalisée:
    faire le traitement

Hors ligne

#5 15-04-2015 20:43:19

Alone9
Membre
Inscription : 29-08-2014
Messages : 32

Re : [Aide] Celery

Y a pas de documentation sur timeout on dirait bien. J'utilise Celery 3.1.17.
Un exemple serait super.

EDIT:
J'ai réussi à créer une tâche récurrente selon mes conditions mais il faudrait que je puisse supprimer la première tâche (ou la réinitialiser) pour laisser place à la seconde tâche(qui est un mise à jour de la première). Une idée?

Dernière modification par Alone9 (17-04-2015 04:54:41)

Hors ligne

Pied de page des forums