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 une tâche (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. L'option --task indique que l'application est destinée à être utilisée pour exécuter Tasks. Par conséquent, aucune route ne sera créée sur l'application et ne sera déployée en tant qu'application de longue durée.

    kf push test-app --task
  3. Vérifiez qu'aucune instance de l'application ni aucune route n'a été créée en répertoriant l'application :

    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 une tâche

Pour programmer l'exécution d'une tâche, vous devez d'abord créer une tâche (Job) qui la décrit :

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

La tâche (Job) démarre en étant suspendue ou non planifiée, et ne crée pas de tâches (Tasks) tant qu'elle n'est pas exécutée manuellement par kf run-job ou planifiée par kf schedule-task.

Exécuter une tâche manuellement

Les tâches peuvent être exécutées ad hoc de manière semblable à l'exécution de tâches via kf run-task. Cette option peut servir à tester la tâche avant de la planifier ou de l'exécuter au besoin en plus de la planification.

kf run-job test-job

Cette commande exécute immédiatement et une seule fois la tâche (Task) définie par la tâche (Job).

Planifier une tâche

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

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

Cette commande déclenche l'exécution automatique de la tâche 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'une tâche 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 une même tâche. Si vous avez besoin de plusieurs planifications Cron, vous pouvez utiliser plusieurs tâches.

Gérer les tâches et les planifications

Affichez toutes les tâches dans l'espace actuel, planifiées 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, la commande kf job-schedules ne permet d'afficher que les tâches planifiées.

$ 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 répertorié dans le résultat de kf job-schedules.

Annuler la programmation d'une tâche

Vous pouvez arrêter une tâche planifiée à l'aide de la commande kf delete-job-schedule :

kf delete-job-schedule test-job

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

Supprimer une tâche

L'intégralité de la tâche peut être supprimée à l'aide de la commande kf delete-job :

kf delete-job test-job

Cette commande supprime la tâche (Job) et toutes les tâches (Tasks) qu'elle a créées, qu'elles soient 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, commencez par supprimer la planification des tâches avec kf delete-job-schedule, attendez que toutes les tâches soient terminées, puis supprimez la tâche en appelant kf delete-job.