调度程序工作一次

时间:2018-08-05 19:35:49

标签: ruby-on-rails scheduler clockwork

项目使用任务计划程序-gem 'clockwork'。 Capistrano执行该钩子:

after :'deploy:finished', :'clockwork:restart'

调度程序被触发一次(在此钩子之后),运行所有rake任务,然后不启动任务。无论我间隔多少时间(一天或5分钟),任务都不会再开始。宝石“守护程序”已安装。我将很高兴为您提供帮助!

更新

require 'clockwork'
require_relative './boot'
require_relative './environment'

module Clockwork
 handler do |job|
  puts "Running job: #{job}"
end

every(1.minute, 'job:some_task') do
 rake_task('job:some_task')
end

def rake_task(task_name)
  AppName::Application.load_tasks
  Rake::Task[task_name].invoke
end

configure do |config|
  config[:sleep_timeout] = 3600 # 1 hour
  config[:logger] = Logger.new("#{Rails.root}/log/clockwork.log")
  config[:tz] = 'UTC'
  config[:max_threads] = 15
  config[:thread] = true
end
end

1 个答案:

答案 0 :(得分:0)

我的猜测是您不是将时钟工作作为守护程序运行,因此为什么它只能运行一次。 Have a look at this gist

desc "Start clockwork"
task :start, :roles => clockwork_roles, :on_no_matching_servers => :continue do
  run "daemon --inherit --name=clockwork --env='#{rails_env}' --output=#{log_file} --pidfile=#{pid_file} -D #{current_path} -- bundle exec clockwork config/clockwork.rb"
end

您始终可以通过SSH进入您的部署,并检查PID列表或在rails应用程序中检查存储发条PID的临时文件:

.../tmp/pids/clockwork.pid

或者检查发条的日志:

.../log/clockwork.log
相关问题