Il mio obiettivo è di avere un'applicazione Python che esegue un server Web che ospita l'interfaccia utente e, in base alle interazioni di un utente nel browser, attività a lunga esecuzione avviate e attraverso qualche processo, riportare le informazioni sullo stato al web server e successivamente di nuovo al browser.
L'applicazione non dovrà essere utilizzata da più di una persona alla volta e se 2 o più utenti accedono all'URL, lo stato dovrebbe essenzialmente essere condiviso tra tutte le istanze. Cioè, ogni utente non ha una sessione di accesso unica.
Lo scopo principale dell'applicazione è quello di mantenere un elenco di dispositivi che scopre automaticamente sulla rete e di eseguire il polling di tali dispositivi ogni 30-60 secondi e di aggiornare l'interfaccia utente se è in uso. Inoltre, l'utente può selezionare uno o più di questi dispositivi e impartire comandi o aggiornare il proprio software. Nell'istanza dell'aggiornamento del software, mi piacerebbe averlo abbastanza reattivo in cui potrei mostrare le barre di avanzamento in tempo reale per ciascun dispositivo che mostrano quale percentuale del firmware è stata caricata.
Il mio pensiero iniziale è qualcosa come web.py o Cherrypy per la GUI, ora sono solo bloccato sul metodo migliore per dare il via a quei processi dal server web e su come reinserire le informazioni. Stavo pensando di avere qualche daemon in ascolto per i comandi su un socket che l'app Web avrebbe inviato, e avrebbe usato i socket per passare lo stato avanti e indietro tra il demone e il web. Poi ho ancora bisogno di ottenere queste informazioni senza problemi dal web al client, quindi stavo pensando a websocket per questo.
Sto solo cercando consigli su alcune buone pratiche per fare in modo che l'interfaccia web comunichi avanti e indietro tra i lavoratori effettivi e poi come trasferire i dati da worker a web server a browser client.
Le forze trainanti dietro l'utilizzo dell'approccio basato sul browser è che il sistema stesso deve funzionare su hardware a basso costo che esegue Linux su x86 (non armato) con piccole quantità di memoria. Potrebbe essere un'app GUI che noi VNC in una macchina da usare, ma il metodo headless mi è sembrato migliore. Non sono al 100% legato a questa idea se qualcuno può suggerire alternative migliori.