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
Clonez le dépôt test-app :
git clone https://github.com/cloudfoundry-samples/test-app test-app
cd test-app
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
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
.