Server web asincrono e implementazione dei "lavoratori" associati

0

In un'implementazione regolare del provider di servizi WSGI esiste un server HTTP di blocco che fornisce servizi ai client. Quando un cliente, ad esempio, crea una fattura, il server esegue semplicemente un'operazione CRUD che crea righe nelle tabelle necessarie. Poi c'è un lavoratore - in genere uno script di shell che utilizza lo stesso insieme di modelli utilizzati dal framework server (MVC). Questo worker (applicato all'esempio), ad esempio, viene eseguito in cron ogni n secondi e controlla il conto bancario per eventuali nuove transazioni. Quando viene trovato uno nuovo (e corrisponde all'account della fattura creata in precedenza), fa di nuovo il CRUD per aggiornare le righe della fattura precedentemente create, ecc.

Ora, quando parliamo di implementazione del server HTTP asincrono (ad esempio Python Tornado), come ci avviciniamo alla parte "lavoratori"? Perché ci deve ancora essere un processo che controlla il conto bancario per eventuali nuove transazioni. Eseguiamo solo un IOLoop, che al suo interno esegue l'effettiva applicazione del server HTTP, così come tutti i "lavoratori" necessari, che sono semplicemente diverse app separate, che, ancora, usano lo stesso modello impostato dall'app del server principale? Voglio dire, possiamo potenzialmente far funzionare i lavoratori come separte completamente i processi da cron, ma poi l'asincronizzazione non ha molto senso, vero? O i "lavoratori" dovrebbero essere implementati in modo completamente diverso (eliminando il concetto di "lavoratore"?) E io non sto cogliendo tutte le cose asincrone correttamente? Grazie!

    
posta lime 14.07.2016 - 11:18
fonte

1 risposta

1

Sembra che il tuo sistema abbia uno scenario produttore-consumatore, in cui una parte produce dati / messaggi per l'altra parte per consumarla.

Se è così, puoi utilizzare un Message Broker come MSMQ o %codice%. Dal momento che consentono la comunicazione asincrona tra due applicazioni.

Se sia fattibile per il tuo sistema o meno dipenderà dalla sua complessità, disponibilità di risorse ecc.

    
risposta data 14.07.2016 - 12:44
fonte