2012-10-10 30 views
16

tetiklenir almıyorum:Sidekiq işçisi benim arka plan işler için <a href="http://mperham.github.com/sidekiq/">Sidekiq</a> kullanıyorum

Ben bir işçi uygulaması/çalışanlar/data_import_worker.rb bir dosya lib/parse_excel Aranan

class DataImportWorker 
include Sidekiq::Worker 
sidekiq_options retry: false 

    def perform(job_id,file_name) 
    begin 
    #Some logic in it ..... 
    end 
end 

. En kısa sürede benim eylem işçiler, onu tetikleyici olarak

def parse_raw_data 
     #job_id and #filename are defined bfr 
     DataImportWorker.perform_async(job_id,filename) 
    end 

rb r, çağrılmıyor .. Redis, localhost:6379

üzerinde çalışıyor. Çevre Linux.

+0

sidekiq çalışıyor mu? Günlükte ne yazıyor? Redis'i kontrol ettiniz mi, sıraya eklenen iş: varsayılan mı? – Roman

+0

@Roman: Cevabınız için teşekkürler! Evet sidekiq ve redis her ikisi de çalışıyor .. iş de varsayılan sıraya ekleniyor ... ama konsoldan iş tetiklediğinde – AnkitG

+0

çalışır Belki de geliştirme ve üretim yaparken farklı veritabanları veya ad alanları var. Ya da farklı bir kuyruk kurulur. – Roman

cevap

28

şu anki işçileri görmek mümkün olacak nerede Sidekiq oldu çalıştıran ama ne zaman perform_async'u aradım, true dönüşü dışında hiçbir şey yapmadı. ": Geliştirme,: Test" grup

sorun

benim eklendi RSpec-sidekiq oldu. Sorunu, yalnızca ": sınama" grubuna rspec-sidekiq hareket ettirerek giderdim.

+1

Bu benim durumumda benzer bir sorun oldu benim durumumda – AnkitG

+1

Aynı sorunu vardı. Paketimi de yeniden kurmak zorunda kaldım: 'bundle install --without test ' – keaplogik

+3

Bu cevaba bir bağlantı ekledim https://github.com/mperham/sidekiq/wiki/Problems-and-Troubleshooting#the-workers- gelecekteki referans için başlamıyor – lkartono

1

Aynı sorunla karşılaşıyorum, perform_async işlevinde ilettiğim argümanın uygun olmadığını, perform_async'te herhangi bir sorgu sonucunu geçmemesi gerektiği anlaşılıyor, işlevdeki tüm sorguları yapmanız gerekir gerçekleştirin.

2

İşçinin bulunduğu sıranın adını belirtmeniz gerekir.

Örnek: sidekiq_options yeniden denemek: false, : => data_import_worker

data_import_worker kuyruğu bunu vermek istediğiniz herhangi bir ad olabilir. Sonra

web arayüzünden gittiğinizde: yoursite.com/sidekiq, ne de benzer bir sorun vardı kuyruk "data_import_worker"

0

Sorunum yalnızca çalışan dosyasını yanlış yola sokuyordu.

İhtiyaçları dosya yolunu kontrol edin, değil "project_root/işçi/worker.rb"

"project_root/app/işçi/worker.rb" olmak!

+2

/app/işçiler kesinlikle (çoğul) – mahemoff

6

Rails uygulamanızın kök dizininden sidekiq'i başlatın. Örneğin,

demet exec -e evreleme sidekiq -C yapılandırma/sidekiq.yml

0

bu gerçekten bağımsız sidekiq birden fazla işçi çalıştırılır? ProccessWorker

Ben runnigs sidekiq duyuyorum CallbackWorker

: paket exec sidekiq -r ./workers/proccess_worker.rb -C ./config/sidekiq örneğin Ben 2 işçi var.Aynı anda yalnızca bir çalışan olan yml

.

1

Bir perform_later yaparken bana göre sıra dışı olur, ancak kuyruktan asla kaldırılmaz. Ben ancak benim sidekiq evreleme modunda başlatıldı, sidekiq.yml dosyası

--- 
:concurrency: 25 
:pidfile: ./tmp/pids/sidekiq.pid 
:logfile: ./log/sidekiq.log 
:queues: 
    - default 
    - my_queue 
0

Bir üretim konsolunda perform_async(23) çağırıyordu benim kuyruk adı eklemek gerekiyordu.

Sidekiq'i üretim modunda başlattıktan sonra işler çok iyi çalışmaya başladı.

1

Bu konuda 15 dakika kaybettim. Sidekiq'in config dosyanızı (kuyruk adlarıyla) doğru şekilde yükleyip yüklemediğini kontrol etmek için, Meşgul tabında web arayüzüne gidin ve İşlem Kimliğinizi bulacaksınız ve bunun altında sıralarınızı bulacaksınız.

Bizim örneğimizde, mailer (Postacılar için doğru ActiveJob kuyruğu mailers, çoğul olarak) yanlış yazılmıştı.

İlgili konular