Poiché nessuno ha fornito una soluzione a this post oltre al fatto che ho un disperato bisogno di soluzioni alternative, ecco la mia situazione e alcune soluzioni/idee astratte per il dibattito.Hack dell'integrazione del sedano Tornado
mio stack:
- Tornado
- sedano
- MongoDB
- Redis
- RabbitMQ
Il mio problema: trovare un modo per i Tornado di spedire un sedano compito (risolto) a d poi raccogliere in modo asincrono il risultato (qualche idea?).
Scenario 1: (richiesta/mod risposta più webhook)
- Tornado riceve una richiesta (utente), quindi salva nella memoria locale (o in Redis) un {JobID: (utente) richiesta} di ricordare dove per propagare la risposta, e spara un compito sedano con JobID
- Quando sedano completa l'operazione, viene eseguita una webhook ad un certo URL e dice tornado che questo JobID ha terminato (più i risultati)
- Tornado recupera il (utente) richiesta e inoltra una risposta al (utente)
Può succedere questo? Ha qualche logica?
Scenario 2: (tornado più a lungo polling)
- Tornado invia il compito di sedano e restituisce alcuni dati JSON primarie al client (jQuery)
- jQuery fa alcune a lungo polling al ricevimento del json primario, ad esempio, ogni x microsecondi e le risposte del tornado in base ad alcuni flag del database. Quando l'attività di celery è completata, questo flag di database è impostato su True, quindi jQuery "loop" è terminato.
È efficiente?
Altre idee/schemi?
Ottimo lavoro Eren! – hymloth