2016-08-30 8 views
-1

Ожидает ли выполнение этого задания планировщика выполнить предыдущий запуск или пропустить, если обнаружит, что предыдущий запуск еще запущен?Задача диспетчера Rufus Rails перескакивает, если существует переменная переменной перекрытия false и mutex?

ответ

0

Существует два случая рассмотрения: единый процесс и многопроцессорный случай.

Многопоточный процесс происходит, когда ваш Rails использует сервер, настроенный/настроенный на использование нескольких процессов Ruby.

На сервере, я имею в виду WEBrick, Unicorn, Passenger, Puma и т.д. ...

В обеих случаях перекрытие считаются перед мьютексом.

В одном случае процесс overlap => false будет первым, а планировщик пропустит входящее, перекрывающееся задание. Затем будет рассмотрен мьютекс (если задание не перекрывается) и может заставить задание ждать, пока мьютекс не будет освобожден экземпляром того же задания или экземпляром задания, указывающего на тот же мьютекс.

В случае многократном процесса, вы можете в конечном итоге, планировщик в каждом из ваших процессов Руби и overlap и mutex могущества появляются быть не соблюдается, а в их локальном процессе Ruby, они есть, но так как у вас есть более чем один процесс с каждым планировщиком ...

Если у вас есть сервер дает вам несколько процессы, Ruby, и вы хотите иметь один Руфус-планировщик работает на своих рабочих местах, вы должны прочитать https://github.com/jmettraux/rufus-scheduler#lockfile--mylockfiletxt и https://github.com/jmettraux/rufus-scheduler#scheduler_lock есть также многостраничных вопросов, посвященных этому вопросу.