In questo momento ho una pagina web con vari pulsanti e opzioni che mi piacerebbe usare per inviare comandi a uno script python in esecuzione sul server web. Lo script python viene utilizzato per interfacciarsi con dispositivi su una connessione seriale e per eseguire calcoli con i dati ricevuti sia dalla pagina Web che dalla connessione seriale.
Mi è stato consigliato di usare Node.js con socketIO per aprire un socket dalla pagina web di front-end al server. Sono stato in grado di ottenere socketio in esecuzione in pochi minuti e l'invio di dati a un server javascript. Ora ho provato a utilizzare quel server per sostituire il mio script python, ma i miei calcoli richiedevano troppo tempo e il thread singolo era molto limitante.
Vorrei tornare al mio script python per gestire i calcoli (e possibilmente anche le comunicazioni seriali), ma ci sono così tante opzioni disponibili che non ho il tempo di provarle tutte e vedere quale funziona meglio.
A partire da ora sto guardando:
-
websocket Javascript che parlano direttamente allo script python tramite socket
La limitazione qui è che non sfrutterò la scalabilità e la potenza di Node.js o socket.io che potrebbero gestire meglio le connessioni concorrenti senza che io debba reinventare la ruota.
-
Socket.io parla con un server javascript socket.io, che quindi inoltra i dati su un net.Socket allo script python
È eccessivo avere uno script aggiuntivo che invii solo informazioni? Nella mia mente trarrebbe vantaggio da tutte le funzionalità di socket.io, ma aggiungo un livello al mio web stack.
-
Socket.io parla direttamente con uno script python usando python-socketio
Penso che questo sia più sensato, in realtà non so di eventuali carenze.
Idealmente, la soluzione avrebbe una bassa latenza, consentire l'invio e il ricevimento di dati dalla pagina Web di front-end e consentire il threading, per cui calcoli molto lunghi non bloccheranno i processi. NON ho bisogno che Python agisca come un websever e molti pacchetti che vedo vengono usati in questo modo. Curioso per ogni input che potresti avere.