Cerco un semplice (vale a dire, non uno che mi richiede di configurare un server separato per gestire una coda di messaggistica) modo di fare a lungo polling per una piccola interfaccia web che esegue calcoli e produce un grafico. Questo è ciò che la mia interfaccia web deve fare: richiestenon Message Queue/lungo semplice-polling in Python (e Flask)
- utente un grafico/dati in un interfaccia web
- Server viene eseguito alcuni calcoli.
- Mentre il server è in esecuzione calcoli, un piccolo contenitore viene aggiornato (probabilmente tramite la tecnologia AJAX/jQuery) con il progresso di calcolo (simile a quello che si farebbe in una consolle con stampa (cioè di stampa 'calcolare funzione di densità ...'))
- finiture calcolo e il grafico è mostrato all'utente.
Dato che il calcolo è stato eseguito sul lato server, non sono proprio sicuro di come configurarlo facilmente. Ovviamente voglio configurare un'API REST per gestire il polling, che sarebbe facile con Flask. Tuttavia, non sono sicuro di come recuperare gli aggiornamenti effettivi. Una soluzione ovvia, anche se complicata per questo scopo, sarebbe quella di impostare una coda di messaggi e fare un lungo polling. Tuttavia, non sono sicuro che questo sia l'approccio giusto per qualcosa di così semplice.
Ecco le mie domande:
- C'è un modo per farlo utilizzando il file system? Le prestazioni non sono un problema enorme. AJAX/jQuery può trovare messaggi da un file? Salva i progressi in qualche file .json?
- E il decapaggio? (Non so molto sul decapaggio, ma forse potrei sottacere un messaggio dettato e potrebbe essere letto da un'API che sta gestendo il polling).
- è polling anche l'approccio giusto? C'è un modello migliore o più comune per gestire questo?
Ho la sensazione che sto complicando le cose perché so che questo tipo di cose è comune sul web. Molto spesso vedo accadere cose e una piccola immagine "loading.gif" è in esecuzione mentre è in corso qualche calcolo (ad esempio, in Google Analytics).
Grazie per il vostro aiuto!
Ah, grazie * così * tanto per questo! Ho intenzione di dare un'occhiata al tuo codice stasera. "Ma trovare buoni esempi semplici di implementazione sul lato server è stato, secondo la mia esperienza, difficile." è l'esperienza esatta che ho avuto, quindi sono contento di sapere che non sono solo. Grazie ancora!! – aaronlevin
FYI Ho provato prima questo con bottle.py (con uno script di sottoprocesso lungo) e ho avuto alcuni problemi di blocco. Con Flask funziona alla grande. Grazie! – Nate
Come si sincronizzano più client con tutti i segnali contemporaneamente? – r1d3h4rd