Ожидает ли выполнение этого задания планировщика выполнить предыдущий запуск или пропустить, если обнаружит, что предыдущий запуск еще запущен?Задача диспетчера Rufus Rails перескакивает, если существует переменная переменной перекрытия false и mutex?
ответ
Существует два случая рассмотрения: единый процесс и многопроцессорный случай.
Многопоточный процесс происходит, когда ваш 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 есть также многостраничных вопросов, посвященных этому вопросу.