Frontend per applicazioni Web Python per diagnostica e interazione delle apparecchiature

0

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.

    
posta drew010 02.05.2013 - 23:40
fonte

1 risposta

2

"GUI" o web fronted

Puoi scegliere tra diversi framework web molto facili e fantasiosi per costruire il frontend (hai già citato web.py e Cherrypy). Personalmente preferisco Flask , che viene mantenuto attivamente, ampiamente utilizzato, facile da imparare, molto leggero e ha grandi docs / comunità.

'Backend' o attività asincrone

Celery è una buona libreria in cui le attività vengono eseguite in modo asincrono in background (ad esempio, verifica i tuoi dispositivi o whatnot ) e invio di dati alla tua applicazione tramite un DB come Redis.

In sintesi puoi impostare una app Flask molto semplice in pochi minuti e averla "chiama" i lavoratori di Celery . L'unica cosa non pitonica di cui avrai bisogno è Redis che consente all'app Workers / Flask di comunicare, ma questo è descritto nei documenti di Celery.

    
risposta data 19.08.2013 - 14:11
fonte

Leggi altre domande sui tag