2013-05-03 13 views
9

Ho un grande array numpy che è memorizzato in redis. Questo array funge da indice. Voglio pubblicare i risultati filtrati su http da un'app per le fiasche in esecuzione su gunicorn e voglio che tutti gli operatori generati da gunicorn abbiano accesso a questo array numpy. Non voglio andare a redis ogni volta e deserializzare l'intero array in memoria, invece all'avvio voglio eseguire del codice che fa questo e ogni worker forked di gunicorn ottiene solo una copia di questo array. Il problema è che non riesco a trovare alcun esempio su come utilizzare gli hook del server di gunicorn: http://docs.gunicorn.org/en/latest/configure.html#server-hooks per raggiungere questo obiettivo. Potrebbe essere che i hook del server non sono il modo giusto per farlo, qualcun altro ha fatto qualcosa di simile?Condividi un array numpy nei processi gunicorn

risposta

3

Creare un'istanza di un ascoltatore server e fare in modo che i figli di gunicorn si connettano a tale processo per recuperare i dati di cui hanno bisogno come client. In questo modo i processi possono modificare le informazioni secondo necessità e richiederle dal processo principale invece di andare su Redis per ricaricare l'intero set di dati.

Ulteriori informazioni qui: Multiprocessing - 16.6.2.10. Listeners and Clients.