Как запустить функцию только в одном потоке на многопоточном сервере Unicorn Sinatra? - PullRequest
0 голосов
/ 23 октября 2019

Я поместил свою задачу cron в модуль, а затем на мой сервер Sinatra.

module Cron
  scheduler = Rufus::Scheduler.new

  scheduler.every "30m", :first => :now do
    run_cmd('git pull')
    puts "pulled the repo!!!"
  end
end

class MyServer < Sinatra::Base
  include Cron
end

Точка входа для приложения - единорог (unicorn config/config.ru -p 9393 -c config/unicorn.rb), а в unicorn.rb этоline

worker_processes 7

Из-за этого git pull запускается семь раз каждые 30 минут, а pulled the repo!!! печатается семь раз.

Есть ли способ выполнить эту задачу только водна нить? Я попытался поместить его в unicorn.rb выше worker_processes 7 строки, но я не уверен, что это лучшее место для этого кода.

...