一度に1つのレーキタスクのみが実行されていることを確認する方法は?
-
02-10-2019 - |
質問
Cronを介して実行するようにレーキタスクをセットアップしたいです。それは簡単ですが、簡単ではないのは、そのレーキタスクのコピーが一度に実行されていることを保証することです。システムでPSを使用して、既に実行されている場合にレーキタスクをチェックしてから終了することができます。または、タスクの名前をシリアル化してdbを削除する遅延したジョブ構造を実行できますが、dbを削除しますが、何をお勧めしますか?
解決
Unixはこの問題をPIDファイルで解決しました。 PIDファイルは /var /runにあり、プログラムプロセスIDが含まれています。これが男のページです: http://fuse4bsd.creo.hu/localcgi/man-cgi.cgi?pidfile+3
あなたはそれを少し昔ながらにするかもしれません(そして私は同意します)が、それはよく使われ、実証済みの方法です。
他のヒント
使用できます https://rubygems.org/gems/only_one_rake, 、namespaceのように:rails dosc "online user count" only_one_task:online_user_count =>:環境do loop {onlineuser.count;スリープ1}終了
所属していません StackOverflow