2013-05-04 10 views
18

Sto utilizzando un operatore Sidekiq per completare alcune richieste su Facebook dopo che un utente ha effettuato l'accesso per la prima volta. In genere l'attività richiede circa 20 secondi.Il modo migliore per monitorare il completamento di un lavoro Sidekiq?

Vorrei caricare alcune informazioni sulla pagina utilizzando una richiesta Ajax non appena la sincronizzazione è completata, ma non sono sicuro del modo migliore per verificare il completamento del lavoro con Javascript.

Una possibilità sarebbe configurare l'operatore Sidekiq per impostare un cookie dopo che il resto dei lavori è stato eseguito. Quindi posso usare una funzione setTimeout per continuare a controllare il cookie prima di chiamare la funzione di caricamento. Ma non sono sicuro che questo sia il modo migliore per farlo. Potrei usare Redis invece?

+0

In un lavoratore sidekiq non è possibile impostare un cookie, poiché per consegnare un cookie al client è necessario inviare loro una risposta HTTP e worker non è un server. – RocketR

risposta

1

Paul, inizialmente devi dare un'occhiata a questo PubSub on Rails tutorial!

Questa sarà la soluzione migliore per informare l'utente quando si verificano eventi asincroni/completi nel back-end.

suggerimento: se stai usando heroku, avrai un sacco di librerie con questa complessità astratta per te.

1

Paul, terrei le vostre preoccupazioni separate. Suppongo che il lavoratore sidekiq utilizzi un modello di rotaia activerecord per inviare alcune informazioni a Facebook. Vorrei impostare una bandiera su quel modello su true quando le richieste di Facebook sono state completate con successo.

Quindi è possibile attivare un setTimeout in js per eseguire il polling di tale modifica nel db ... o per risposte più rapide e automatiche che è possibile esaminare utilizzando socket Web. Ho usato una libreria chiamata Pusher in passato. È abbastanza facile da integrare con le guide e rende l'interfaccia utente molto scattante.

Problemi correlati