Planifier des tâches

Vous pouvez exécuter des workflows de courte durée en les exécutant en tant que tâches. La page Exécuter des tâches explique comment exécuter des tâches sous "Applications".

Vous pouvez également planifier les tâches pour qu'elles s'exécutent à des intervalles récurrents spécifiés en utilisant le format unix-cron. Avec les tâches planifiées, vous commencez par déployer une application exécutant la tâche comme vous le feriez avec une tâche non planifiée, puis vous créez un job pour la planifier.

Vous pouvez définir un calendrier pour que votre tâche s'exécute plusieurs fois par jour ou à des jours et des mois spécifiques.

Transférer une application pour exécuter des tâches planifiées

  1. Clonez le dépôt test-app :

    git clone https://github.com/cloudfoundry-samples/test-app test-app
    cd test-app
  2. Déployez l'application.

    Déployez l'application en utilisant la commande kf push APP_NAME --task. Le flag --task indique que l'application est destinée à être utilisée pour l'exécution de tâches. Par conséquent, aucune route ne sera créée sur l'application et celle-ci ne sera pas déployée en tant qu'application de longue durée.

    kf push test-app --task
  3. Vérifiez qu'aucune instance ni aucune route n'a été créée en listant les applications :

    kf apps

    Notez que l'application n'est pas démarrée et ne possède pas d'URL :

    Listing Apps in Space: test-space
    Name                     Instances  Memory  Disk  CPU   URLs
    test-app                 stopped    1Gi     1Gi   100m  <nil>
    

Créer un job

Pour exécuter une tâche de façon planifiée, vous devez d'abord créer un job qui décrit la tâche en question :

kf create-job test-app test-job "printenv"

Le job démarre en étant suspendu ou non planifié et ne crée pas de tâches tant qu'il n'est pas exécuté manuellement par kf run-job ou planifié par kf schedule-task.

Exécuter un job manuellement

Les jobs peuvent être exécutés ad hoc de manière semblable à l'exécution de tâches via kf run-task. Cette option peut servir à tester le job avant de le planifier ou de l'exécuter selon les besoins en plus de la planification.

kf run-job test-job

Cette commande exécute la tâche définie par le job immédiatement et une seule fois.

Planifier un job

Pour planifier l'exécution du job, vous devez fournir une planification unix-cron dans la commande kf schedule-job :

kf schedule-job test-job "* * * * *"

Cette commande déclenche le job de façon à créer les tâches automatiquement selon la planification spécifiée. Dans cet exemple, une tâche s'exécute toutes les minutes.

Vous pouvez mettre à jour la programmation d'un job en exécutant kf schedule-task avec une nouvelle planification. Les tâches dans Kf ne peuvent avoir qu'une seule planification Cron. Cela diffère de PCF Scheduler, qui permet d'utiliser plusieurs planifications pour un même job. Si vous avez besoin de plusieurs planifications Cron, vous pouvez utiliser plusieurs jobs.

Gérer les jobs et les planifications

Affichez tous les jobs dans l'espace actuel, planifiés ou non, en utilisant la commande kf jobs :

$ kf jobs
Listing Jobs in Space: test space
Name               Schedule    Suspend  LastSchedule  Age  Ready  Reason
test-job           * * * * *   <nil>    16s           2m   True   <nil>
unscheduled-job    0 0 30 2 *  true     16s           2m   True   <nil>

En outre, vous pouvez afficher uniquement les jobs dont la planification est active avec la commande kf job-schedules.

$ kf job-schedules
Listing job schedules in Space: test space
Name           Schedule   Suspend  LastSchedule  Age  Ready  Reason
test-job       * * * * *  <nil>    16s           2m   True   <nil>

Notez que unscheduled-job n'est pas recensé dans le résultat de kf job-schedules.

Annuler la planification d'un job

Vous pouvez arrêter un job planifié à l'aide de la commande kf delete-job-schedule :

kf delete-job-schedule test-job

Cette commande suspend le job et l'empêche de créer des tâches selon la planification précédente. Le job n'est pas supprimé et peut être à nouveau planifié par kf schedule-job pour continuer l'exécution.

Supprimer un job

Le job peut être entièrement supprimé à l'aide de la commande kf delete-job :

kf delete-job test-job

Cette commande supprime le job et toutes les tâches créées par le job, qu'il s'agisse d'exécutions planifiées ou manuelles. Si des tâches sont toujours en cours d'exécution, cette commande force leur suppression.

Pour vous assurer que les tâches en cours d'exécution ne soient pas interrompues, supprimez d'abord la planification des jobs avec kf delete-job-schedule, attendez que toutes les tâches soient terminées, puis supprimez le job en appelant kf delete-job.