Search code examples
ruby-on-railsrubyresqueresque-scheduler

Resque schedueler loading jobs but not enqueing


I have a schedule and it is defined in the resque.rake like this:

require 'resque/tasks'
require 'resque/scheduler/tasks'
task 'resque:setup' => :environment



namespace :resque do
  task :setup do
    require 'resque'
    Resque.redis = 'localhost:6379'


  end

  task :setup_schedule => :setup do
    require 'resque-scheduler'
    ENV['RAILS_ENV'] = Rails.env
    Resque.schedule = YAML.load_file('config/tweet_schedule.yml')
    require 'tweet_sender.rb'
    end

task :scheduler => :setup_schedule


end

The schedele tweet_schedule.yml

tweet_sender:
  cron: "57 7 * * *"
  class: "TweetSender"
  queue: tweets_queue
  args: tweet_id
  rails_env: development
  description: "This job sends daily tweets from the content db"

Whenever I run (and the redis-server, rails s, load the workers through

bundle exec rake resque:work QUEUE='*' --trace

)

bundle exec rake environment resque:scheduler I get the following output

resque-scheduler: [INFO] 2017-04-14T09:14:49+02:00: Starting
resque-scheduler: [INFO] 2017-04-14T09:14:49+02:00: Loading Schedule
resque-scheduler: [INFO] 2017-04-14T09:14:49+02:00: Scheduling tweet_sender 
resque-scheduler: [INFO] 2017-04-14T09:14:49+02:00: Schedules Loaded
Passing 'info' command to redis as is; administrative commands cannot be effectively namespaced and should be called on the redis connection directly; passthrough has been deprecated and will be removed in redis-namespace 2.0 (at sucesfully/home/jan/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/resque-1.27.2/lib/resque/data_store.rb:60:in `method_missing')
Passing 'script' command to redis as is; administrative commands cannot be effectively namespaced and should be called on the redis connection directly; passthrough has been deprecated and will be removed in redis-namespace 2.0 (at /home/jan/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/resque-1.27.2/lib/resque/data_store.rb:60:in `method_missing')

So I assume it is loading my schedusucesfullyle but it looks like it is not getting enqued (I have ignored the namespace warning so far)

The schedule shows up in the resque-scheduler web ui and whenever I manually set it of through the web interface button the job gets executed successfully. Any ide why it does not load correctly?

Queue now button used to set of jobs


Solution

  • So in the end after a lot of trying around I found that resque scheduler was not picking up my cron definition.

    after changing the 5* cron to a 6*cron

    5* cron cron: "57 7 * * *"
    5* cron cron: "15 57 7 * * *"
    

    The job now gets scheduled every hour. I have yet to figure out how schedule the job ever day because the standard cron syntax does not seem to work

    minute (0-59),
    |      hour (0-23),
    |      |       day of the month (1-31),
    |      |       |       month of the year (1-12),
    |      |       |       |       day of the week (0-6 with 0=Sunday).
    |      |       |       |       |       command
    0      2       *       *       0,4