Предотвращение повторного запуска Rake-скрипта
February 25, 2010 , revised February 26, 2010 in DevopsА еще мне нужно было сделать так, чтобы долгоиграющий Rake-скрипт не запускался повторно (по крону). Я это сделал с помощью PID-файла, хотя не исключаю, что есть варианты и попроще.
В начале задачи – проверяем, запущена ли она уже, и если нет, создаем PID-файл.
pid_filename = "#{RAILS_ROOT}/tmp/#{task.name.gsub ':', '.'}.pid" # или любой другой if File.exists?(pid_filename) && system("kill -0 #{File.read(pid_filename).to_i}") fail "Task already running" else File.open(pid_filename,'w') {|f| f.write(Process.pid) } end
В конце задачи – удаляем PID-файл:
File.unlink(pid_filename) rescue nil
Понравился пост? Купи мне кофе