Come assicurarsi che un solo compito rake è in esecuzione in un momento?
-
02-10-2019 - |
Domanda
Voglio attività di impostazione rake per eseguire tramite cron. Questo è facile, ma ciò che non è facile è garantire che solo una copia di tale compito rake è in esecuzione in un momento. Immagino che potrei usare ps sul sistema per controllare e quindi uscire dal task rake se è già in esecuzione, o potrei fare una struttura di lavoro in ritardo in cui ho serializzare il nome del compito e al termine lo tolgo formare il DB, ma che cosa tutto consigliate?
Soluzione
Unix risolto questo problema con i file PID. file pid si trovano in / var / run e contengono i programmi di ID processo. Ecco la pagina man: http://fuse4bsd.creo.hu/ localcgi / man-cgi.cgi? pidfile + 3
Si potrebbe trovare un po 'vecchio (e sono d'accordo), ma è un metodo spesso utilizzato e collaudato.
Altri suggerimenti
È possibile utilizzare https://rubygems.org/gems/only_one_rake , come namespace: rotaie fanno disc "numero di utenti on-line" only_one_task: online_user_count =>: ambiente do ciclo {OnlineUser.count; sleep 1} fine end