项目使用任务计划程序-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
答案 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