Nel mio progetto corrente ho un server web che chiama comandi Linux per ottenere informazioni che vengono poi visualizzate sul sito web. Il problema che ho con questo è che il server web viene eseguito su un piccolo dispositivo incorporato (è fondamentalmente uno strumento di configurazione per il dispositivo) che ha solo 256 MB di RAM. Il server web in sé richiede più della metà della RAM gratuita che ho su quel dispositivo.subprocesso.check_output senza utilizzo di memoria elevato
Ora, quando provo a utilizzare subprocess.check_output() per chiamare un comando, la forcella raddoppia l'utilizzo della RAM (perché clona il processo padre o qualcosa del genere, per quanto ho capito) e quindi arresta il tutto con un "Memoria insufficiente", sebbene il processo chiamato sia piuttosto piccolo.
Poiché il dispositivo utilizza chip flash a basso costo che si sono dimostrati inefficaci in caso di uso eccessivo, non desidero utilizzare soluzioni di swap o altre soluzioni basate sull'aumento della memoria virtuale.
Quello che ho cercato di fare finora è di aprire una sessione SH all'inizio del programma quando è ancora basso sull'utilizzo della memoria e quindi scrivere i comandi su quella sessione e leggere l'output. Funziona così, ma è abbastanza instabile, dal momento che una "uscita" sbagliata o qualcosa di simile può mandare in crash tutto.
Esiste una soluzione simile a subprocess.check_output() che non raddoppia l'utilizzo della memoria?
Che server Web stai utilizzando btw? –
È un programma auto-programmato che utilizza web.py come framework. – Dakkaron
Cura di postarlo da qualche parte in modo che possiamo prendere un gander? –