【问题标题】:Scheduler works once调度器工作一次
【发布时间】:2019-01-12 19:45:41
【问题描述】:

该项目使用任务调度程序 - 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

【问题讨论】:

  • 你能发布你的clock.rb吗?
  • 你的发条进程崩溃了吗?
  • @AlexUnger 我添加了clock.rb
  • @SergioTulentsev 不,进程不会崩溃

标签: ruby-on-rails scheduler clockwork


【解决方案1】:

我的猜测是您没有将发条作为守护进程运行,因此它只运行一次。 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

【讨论】:

    猜你喜欢
    • 2017-03-22
    • 1970-01-01
    • 1970-01-01
    • 2013-02-01
    • 2013-03-17
    • 2016-05-27
    • 2016-12-26
    • 1970-01-01
    • 2016-06-12
    相关资源
    最近更新 更多