2009-10-31 8 views
1

je prévois d'utiliser whenever gem qui, entre autres choses, exécutera aussi tâche râteau minutieusement. Si ma tâche de rake prend plus d'une minute, puis basé sur la sortie de chaque gemme, il semble que la deuxième instance de la tâche rake sera kick-in même si le premier n'est pas tout à fait terminé.chaque fois que gem travail minutieusement. Si le travail minutieux prend plus d'une minute, puis

A chaque fois que gem attendra la fin de la tâche avant de commencer le second?

Si non alors quelles sont les solutions de contournement. Je crois que cette question est mieux servi dans serverfault encore je le mets ici.

Répondre

1

chaque fois qu'il écrit simplement cronjobs, et ne fait aucun effort pour les empêcher de se dépasser. C'est le travail de la tâche qui est en cours d'exécution.

Utilisez des fichiers PID ou des verrous de système de fichiers pour empêcher la tâche de s'exécuter par elle-même.

0

Dans mon application planifiée, j'analyse la liste de processus à la recherche d'autres instances de mon application exécutées avec le même fichier de configuration sur la ligne de commande - puis quitte avec une note enregistrée si un processus est déjà exécuté avec le même fichier de configuration.

qui maintient le programme de marcher sur lui-même ...

fichiers PID ou un certain type de fichier « verrouillage » sont sujettes à des problèmes lorsque les sorties de processus, mais le fichier verrou existe toujours.

+0

Il existe une différence entre un fichier de verrouillage et un verrou de fichier (http://apidock.com/ruby/File/flock). – cwninja

+0

Oui, mais cela ne change pas la faille logique - vous testez toujours si le processus s'exécute "indirectement" en vérifiant si un fichier est verrouillé. Je vérifie "directement" en analysant la liste des processus, y compris les arguments de la ligne de commande - c'est plus simple et plus flexible. –

Questions connexes