Comment faire en sorte qu'une seule tâche de coupe est en cours d'exécution à un moment?
-
02-10-2019 - |
Question
Je veux des tâches de râteau de configuration pour exécuter via Cron. C'est facile, mais ce n'est pas est facile assurant que une seule copie de cette tâche de coupe est en cours d'exécution à la fois. J'imagine que je pourrais utiliser ps sur le système pour vérifier et puis quittez la tâche rake si elle est déjà en cours d'exécution, ou que je pouvais faire une structure d'emploi retardé où je sérialiser le nom de la tâche et à la fin je le supprimer former le DB, mais que recommandez-vous tous?
La solution
Unix a résolu ce problème avec les fichiers pid. les fichiers pid sont situés dans / var / run et contiennent les programmes traitent Id. Voici la page de manuel: http://fuse4bsd.creo.hu/ localcgi / homme-cgi.cgi? pidfile + 3
Vous trouverez peut-être un peu vieux jeu (et je suis d'accord), mais il est une méthode souvent utilisée et éprouvée.
Autres conseils
Vous pouvez utiliser https://rubygems.org/gems/only_one_rake , comme Espace de noms: rails font desc « nombre d'utilisateurs en ligne » only_one_task: online_user_count =>: environnement do boucle {OnlineUser.count; sommeil 1} fin fin