App Web con un front-end Node.js interefacing con uno script python con socket

1

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.

    
posta Xander Luciano 25.06.2016 - 00:36
fonte

1 risposta

1

Nell'interesse di rendere le informazioni disponibili a chiunque in futuro, la mia soluzione attuale è avere un server socket.io in esecuzione, che si connette su un socket a uno script python. il server socket.io trasmette solo le informazioni tra i due ed è in grado di gestire più client mentre una soluzione solo Python non gestirà più client senza che io debba reinventare la ruota. Quindi sto sfruttando la potenza multithread di Python con le connessioni multiple di socket.io, senza dover ricreare ciò che è già stato creato da altri. Non sono andato con python-socketio perché le informazioni erano limitate e tutta la documentazione coinvolta flask, che non sto usando (voglio mantenere il mio script python così semplice e leggero in modo che altri possano usarlo facilmente).

    
risposta data 27.06.2016 - 20:41
fonte

Leggi altre domande sui tag