céleri.horaires¶

céleri.schedules¶

Les schedules définissent les intervalles auxquels les tâches périodiques doivent s’exécuter.

exceptioncelery.schedules.ParseException

Levée par crontab_parser lorsque l’entrée ne peut pas être analysée.

classcelery.schedules.schedule(run_every=None, relative=False, nowfun=None, app=None)¶

Planification de la tâche périodique.

Paramètres:

  • run_every – Intervalle en secondes (ou un timedelta).
  • relative – Si elle est définie sur True, la durée d’exécution sera arrondie à la résolution de l’intervalle.
  • nowfun – Fonction renvoyant la date et l’heure actuelles (classe: ~datetime.datetime).
  • application – Instance d’application Céleri.

apphuman_secondsis_due(last_run_at)¶

Renvoie un tuple de deux éléments (is_due, next_time_to_check), où la prochaine fois à vérifier est en secondes.

par exemple

  • (True, 20), signifie que la tâche doit être exécutée maintenant et que la prochaine vérification est dans 20 secondes.
  • (Faux, 12.3), signifie que la tâche n’est pas due, mais que l’ordonnanceurdevrait vérifier à nouveau en 12,3 secondes.

La prochaine vérification est utilisée pour économiser des cycles d’énergie / cpu, elle n’a pas besoin d’être précise mais influencera la précision de votre emploi du temps. Vous devez également garder à l’esprit la valeur de CELERYBEAT_MAX_LOOP_INTERVAL, qui décide du nombre maximum de secondes que le planificateur peut dormir entre la revérification des intervalles de tâches périodiques. Donc, si vous avez une tâche qui change de calendrier à l’exécution, votre next_run_atcheck décidera du temps qu’il faudra pour qu’une modification de la planification prenne effet. L’intervalle de boucle max prend la précédenceà la prochaine vérification à la valeur renvoyée.

Variance d’intervalle max du planificateur

L’intervalle de boucle max par défaut peut varier pour différents planificateurs.Pour le planificateur par défaut, la valeur est de 5 minutes, mais pour par exemple le planificateur de base de données django-celery, la valeur est de 5 secondes.

maybe_make_aware(dt)¶nowrelative= False¶remaining_estimate(last_run_at)¶secondsto_local(dt)¶tzutc_enabled¶ classcelery.schedules.crontab(minute=’*’, hour=’*’, day_of_week=’*’, day_of_month=’*’, month_of_year=’*’, nowfun=None, app=None)¶

A crontab can be used as the run_every value of aPeriodicTask to add cron-like scheduling.

Comme un travail cron, vous pouvez spécifier des unités de temps du moment où vous souhaitez que la tâche s’exécute. C’est une mise en œuvre raisonnablement complète des fonctionnalités de cron, elle devrait donc fournir un bon degré de besoins de planification.

Vous pouvez spécifier une minute, une heure, un jour de la semaine, un jour du mois et/ou un mois de l’année dans l’un des formats suivants :

minute

  • Une (liste de) entiers de 0 à 59 qui représentent les minutes d’une heure où l’exécution doit avoir lieu ; ou
  • Une chaîne représentant un modèle de crontab. Cela peut être assez avancé, comme minute = ‘*/ 15’ (pour chaque trimestre) ouminute =’1,13,30-45,50-59/2 « .

hour

  • Une (liste de) entiers de 0 à 23 qui représentent les heures d’un jour où l’exécution doit avoir lieu ; ou
  • Une chaîne représentant un motif crontab. Cela peut être assez avancé, comme hour = ‘* / 3’ (toutes les trois heures) ouhour = ‘0,8-17/2’ (à minuit et toutes les deux heures pendant les heures de bureau).

day_of_week

  • Une (liste de) entiers de 0 à 6, où Sunday= 0 et Saturday= 6, qui représentent les jours d’une semaine où l’exécution devrait se produire.
  • Une chaîne représentant un motif de crontab. Cela peut être assez avancé, comme day_of_week = ‘lun-ven’ (pour les jours de semaine uniquement).(Attention que day_of_week= ‘*/2’ ne signifie pas littéralement ‘tous les deux jours’, mais ‘chaque jour qui est divisible par deux »)

day_of_month

  • Une (liste de) entiers de 1 à 31 qui représente les jours du mois où l’exécution doit avoir lieu.
  • Une chaîne représentant un motif de crontab. Cela peut être assez avancé, comme day_of_month = ‘2-30 / 3’ (pour chaque jour numéroté) ou day_of_month = ‘1-7, 15-21’ (pour les première et troisième semaines du mois).

month_of_year

  • Une (liste de) entiers de 1 à 12 qui représente les mois de l’année au cours de laquelle l’exécution peut avoir lieu.
  • Une chaîne représentant un motif de crontab. Cela peut être assez avancé, comme month_of_year = ‘*/3’ (pour le premier mois de chaque trimestre) ou month_of_year = ‘2-12/2’ (pour chaque mois numéroté).

nowfun

Fonction renvoyant la date et l’heure actuelles (datetime).

app

L’instance de l’application Céleri.

Il est important de réaliser que tout jour où l’exécution devrait se produire doit être représenté par des entrées dans les trois attributs day andmonth. Par exemple, si day_of_week vaut 0 et day_of_monthis tous les sept jours, seuls les mois commençant le dimanche et se trouvant également dans l’attribut month_of_year auront des événements d’exécution. Ou, day_of_week est 1 et day_of_month est ‘1-7, 15-21’ signifie chaque premier et troisième lundi de chaque mois présent dans month_of_year.

is_due(last_run_at)¶

Renvoie un tuple de deux éléments (is_due, next_time_to_run), où la prochaine fois à exécuter est en secondes.

Voir celery.schedules.schedule.is_due() pour plus d’informations.

nowremaining_delta(last_run_at, tz=None, ffwd=<class’céleri.utils.le temps passe.ffwd’>remaining_estimate(last_run_at, ffwd=<class’céleri.utils.le temps passe.ffwd’>)¶

Renvoie lorsque la tâche périodique doit s’exécuter ensuite en tant que timedelta.

classcelery.schedules.crontab_parser(max_=60, min_=0)¶

Analyseur pour les expressions crontab. Toute expression de la forme « groupes » (voir grammaire BNF ci-dessous) est acceptée et étendue à un ensemble de nombres.Ces nombres représentent les unités de temps sur lesquelles le crontab doit fonctionner:

digit :: '0'..'9'dow :: 'a'..'z'number :: digit+ | dow+steps :: numberrange :: number ( '-' number ) ?numspec :: '*' | rangeexpr :: numspec ( '/' steps ) ?groups :: expr ( ',' expr ) *

L’analyseur est un analyseur général, utile pour analyser les heures, les minutes et les expressions day_of_week. Exemple d’utilisation:

>>> minutes = crontab_parser(60).parse('*/15')>>> hours = crontab_parser(24).parse('*/4')>>> day_of_week = crontab_parser(7).parse('*')

Il peut également analyser les expressions day_of_month et month_of_year si elles sont initialisées avec un minimum de 1. Exemple d’utilisation :

>>> days_of_month = crontab_parser(31, 1).parse('*/3')>>> months_of_year = crontab_parser(12, 1).parse('*/2')>>> months_of_year = crontab_parser(12, 1).parse('2-12/2')

La valeur étendue maximale possible renvoyée est trouvée par la formule :

max_ + min_ - 1

exceptionParseException

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.