Как убедиться, что одновременно выполняется только одно рейковое задание? - PullRequest
0 голосов
/ 10 сентября 2010

Я хочу настроить грабли для запуска через cron. Это легко, но непросто убедиться, что одновременно выполняется только одна копия этой грабли. Я полагаю, что мог бы использовать ps в системе, чтобы проверить, а затем выйти из грабли, если она уже запущена, или я мог бы создать структуру отложенного задания, в которой я сериализовал имя задачи и по завершении я удаляю ее из БД, но что вы все рекомендуете?

Ответы [ 2 ]

0 голосов
/ 14 января 2013

Вы можете использовать https://rubygems.org/gems/only_one_rake, как пространство имен: rails do desc "online user count" only_one_task: online_user_count =>: environment do loop {OnlineUser.count;сон 1} конец конец

0 голосов
/ 10 сентября 2010

Unix решил эту проблему с помощью pid-файлов. Файлы PID находятся в / var / run и содержат идентификатор процесса программы. Вот справочная страница: http://fuse4bsd.creo.hu/localcgi/man-cgi.cgi?pidfile+3

Вы можете найти его немного старомодным (и я согласен), но это часто используемый и проверенный метод.

...