est-il possible d'exécuter le Django célery crontab très 30 secondes pendant des heures spécifiques forte>? p>
Il n'y a que des paramètres pendant des minutes, des heures et des jours. P>
J'ai le travail de crontab, mais j'aimerais le faire fonctionner toutes les 30 secondes, par opposition à chaque minute. P>
est-il possible de transformer l'intervalle pendant 30 secondes et d'allumer le calendrier d'intervalle uniquement pendant une certaine période de la journée? P>
4 Réponses :
Si vous vraiment em> avez besoin de le faire et que vous avez besoin d'une solution rapidement, vous pourriez avoir recours à ajouter:
dormir
dans votre script.
(Évidemment, vous devrez ajouter un paramètre à votre script pour configurer l'heure de veille à 0 ou 30 secondes et ajouter le script deux fois à Crontab, une fois avec 0 comme paramètre, d'autre part avec 30). P>
S'il vous plaît ne vous votez pas à cela! C'est une solution, bien que je ne termine pas très clair que ce n'est pas une solution idéale. P>
Le tout premier exemple qu'ils ont dans la documentation est . ..
Exemple: exécutez la tâche Tâches.Ajouter toutes les 30 secondes. em> p>
from datetime import timedelta CELERYBEAT_SCHEDULE = { "runs-every-30-seconds": { "task": "tasks.add", "schedule": timedelta(seconds=30), "args": (16, 16) }, }
J'en ai besoin pour courir toutes les 30 secondes pendant des heures spécifiques b>. Moi aussi je suis tombé sur le le tout premier exemple qu'ils ont dans la documentation i>.
Je cherche également une solution à cela (et est venu sur cet article). serait vraiment sympa si TimerDelta pourrait être combiné avec Crontab.
J'irais avec votre solution alternative en planifiant une autre tâche pour activer / désactiver la tâche principale: puis planifie simplement cette tâche à l'aide d'un crontab pendant les heures que vous devez basculer. Sinon, vous pouvez avoir une tâche programmée pour l'allumer et l'éteindre pour l'éteindre et ne pas traiter la logique de basculement. P> espère que cela aide. P> SC P> < / p>
Vous pouvez simplement utiliser
from datetime import timedelta @periodic_task(run_every=timedelta(seconds=30)) def thirty_second_task(): now = datetime.now() if now.hour == 12 or now.hour == 9: your code goes here`