2017-07-06 5 views
0

Ich habe einen Anwendungsfall, wo ich tun müssen, tun Sie einen Tag 1 Tag nach einem Produkt hochgeladen wird. Meine Arbeiter-Klasse wird unten geschrieben:Sidekiq-Scheduler Argumente übergeben

require 'sidekiq-scheduler' 
class ProductWorker < ActiveRecord::Base 
    include Sidekiq::Worker 
    def self.day_after_upload(product_id) 
     #do something 
    end 
    def self.week_after_upload(product_id) 
     #do something 
    end 
end 

Mein Produkt Controller ist unter

class ProductsController < ApplicationController 
    def create 
     product=Product.new(product_params) 
     if product.save! 
      Sidekiq.set_schedule('day_after_upload', { 'at' => [prduct.created_at+1.day], 'class' => 'ProductWorker' }) 
      Sidekiq.set_schedule('week_after_upload', { 'at' => [product.created_at+1.week], 'class' => 'ProductWorker' }) 
     end 
    end  
end 

Ich habe Probleme beim Passieren der 'product_id' Parameter an die Arbeiter. Ich konnte nicht finden, wie man kundenspezifischen Parameter auf sidekiq-scheduler github Seite übergibt. Wie übergebe ich benutzerdefinierte Parameter und muss ich einige andere Änderungen vornehmen, damit dies funktioniert? Jede Hilfe wird geschätzt.

Antwort

1

Geplante Jobs sind in Sidekiq integriert, ich weiß nicht, warum Sie Sidekiq-Scheduler verwenden.

OneDayWorker.perform_in(1.day, product_id)  
OneWeekWorker.perform_in(1.week, product_id) 

https://github.com/mperham/sidekiq/wiki/Scheduled-Jobs

+0

Dank .Found es früher. Ich wusste nicht, dass es nur mit Sidekiq gemacht werden kann – Rndomcoder