我正在为我的应用程序创建 DripEmail 活动并使用 resque 调度程序来安排任务。
我已经安排了一个静态作业,它每天在特定时间运行,并根据滴灌设置收集用户列表并向他们发送电子邮件。
这是我的重任user_follow_up.rb
class UserFollowUp
@queue = :user_follow_up
def self.perform
User.each do |u|
# Send the emailers to only those who are not converted
if !user.is_converted and Date.today <= user.next_email
stage(u)
end
end
end
end
这是我的scheduler.yml
UserFollowUp:
cron: "0 16 * * *"
我有 2 个 resque 工作人员,一个有我的默认任务集,另一个用于调度程序。
rake environment resque:work QUEUE=publish_story,accept_story,image_queue,Mango_mailer
和
rake environment resque:scheduler QUEUE=user_follow_up
当我打开 resque 管理界面时,我可以看到在列表中检测到我的静态作业。我单击Queue Now
按钮进行测试。它正确地将任务排入队列,但不执行。它将这些任务永远保留在待处理队列中。
这是我resque.rake
的,它是必需的
require 'resque/tasks'
require 'resque/scheduler/tasks'
require 'resque/scheduler/server'
require 'active_record'
require 'mongoid'
require 'action_controller/railtie'
require 'active_support/buffered_logger'
# load the Rails app all the time
namespace :resque do
puts 'Loading Rails environment for Resque'
task :setup => :environment do
# The schedule doesn't need to be stored in a YAML, it just needs to
# be a hash. YAML is usually the easiest.
Resque.schedule = YAML.load_file("#{Rails.root}/config/scheduler.yml")
Resque::Scheduler.dynamic = true
Resque.logger.info 'Resque Scheduler Initialized!'
Resque.before_first_fork do
# Open the new separate log file
logfile = File.open(File.join(Rails.root, 'log', 'resque.log'), 'a')
# Activate file synchronization
logfile.sync = true
# Create a new buffered logger
Resque.logger = ActiveSupport::BufferedLogger.new(logfile)
Resque.logger.level = Logger::INFO
Resque.logger.info 'Resque Logger Initialized!'
puts 'Resque Logger Initialized!'
end
end
task 'resque:pool:setup' do
Resque::Pool.after_prefork do |job|
Resque.redis.client.reconnect
end
end
end
这是我的 Gemfile
gem 'resque', github: 'resque/resque' , branch: '1-x-stable'
gem 'resque_mailer', github: 'zapnap/resque_mailer'
gem 'resque-scheduler'
我不确定这里有什么问题。请帮我解决这个问题。