4

アプリ用の 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 ワーカーがあり、1 つはデフォルトのタスク セットを持ち、もう 1 つはスケジューラ用です。

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'

ここで何が問題なのかわかりません。この修正を手伝ってください。

4

0 に答える 0