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
Clonez le dépôt test-app :
git clone https://github.com/cloudfoundry-samples/test-app test-appcd test-appDéployez l'application.
Déployez l'application en utilisant la commande
kf push APP_NAME --task. Le flag--taskindique 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 --taskVérifiez qu'aucune instance ni aucune route n'a été créée en listant les applications :
kf appsNotez 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-jobCette 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-jobCette 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-jobCette 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.