Se lavori con molti record e se le sue operazioni richiedono molto tempo, come l'importazione o l'esportazione di migliaia di record o la sincronizzazione di più record, è meglio aggiungerlo al lavoro in background.
Sidekiq è la gemma che può essere utilizzata per questo scopo. Sidekiq utilizza più thread. Il thread predefinito in sidekiq è "Predefinito".
* Per sidekiq, dobbiamo installare il server Redis.
“sudo apt-get install redis” installa e avvia il server Redis per la tua console.
* Aggiungi il gem sidekiq ed esegui l'installazione del bundle.
gemma 'sidekiq'
* Dobbiamo generare la classe lavoratore nella directory app/workers e i file all'interno della directory app/workers verranno caricati automaticamente.
Esempio: /app/workers/test_worker.rb
la classe TestWorker include Sidekiq::Worker def esegue end end
dobbiamo includere Sidekiq::Worker ed eseguire il metodo. Il metodo Perform all'interno del lavoratore verrà chiamato automaticamente e il codice che deve essere eseguito in background verrà scritto qui.
Possiamo chiamare questa classe lavoratore per il metodo controller come questo,
TestWorker.perform_async (se vuoi passare gli argomenti puoi passarli qui).
* Successivamente dobbiamo avviare il server sidekiq
bundle exec sidekiq
* Se un lavoro fallisce a causa di un errore, Sidekiq ritenterà il lavoro. Possiamo evitare il nuovo tentativo fornendo le opzioni sidekiq.
sidekiq_options riprova: falso
* In sidekiq possiamo programmare il lavoro dopo un po' di tempo. Per questo invece di perform_async useremo perform_in.
Esempio: PygmentsWorker.perform_in(1.hour, @snippet.id)
* Possiamo dare la priorità alla coda in sidekiq, ad esempio se abbiamo più lavoratori nella nostra applicazione e se vogliamo che un lavoratore specifico venga elaborato per primo, assegneremo il lavoratore alla coda specifica.
EX: coda sidekiq_options: “alta”
* possiamo elaborare la coda eseguendo il server sidekiq con l'opzione -q.
bundle exec sidekiq -q alto,5 predefinito,1
RailsCarma ha offerto Servizi di sviluppo ROR negli ultimi 8 anni. I nostri sviluppatori sono esperti nell'esecuzione di tutti i tipi di sviluppo di applicazioni Ruby on Rails progetti e migliorando le funzionalità delle applicazioni Rails esistenti. Contattaci per saperne di più sulle nostre capacità di sviluppo e sui progetti su cui abbiamo lavorato.