2013-05-03 5 views
9

Ich habe eine große Anzahl Array, die in Redis gespeichert ist. Dieses Array dient als Index. Ich möchte gefiltertes Ergebnis über http von einer Flask-App, die auf Gunicorn läuft, bedienen und ich möchte, dass alle von Gunicorn hervorgebrachten Arbeiter Zugriff auf dieses numpige Array haben. Ich möchte nicht jedes Mal zu redisistieren und das gesamte Array im Speicher deserialisieren, sondern beim Start möchte ich Code ausführen, der das tut und jeder gegabelte Arbeiter von gunicorn erhält nur eine Kopie dieses Arrays. Das Problem ist, ich kann keine Beispiele finden, wie man Gunicorns Server Hooks benutzt: http://docs.gunicorn.org/en/latest/configure.html#server-hooks , um dies zu erreichen. Mai Server-Haken ist nicht der richtige Weg, es zu tun, hat jemand anderes etwas Ähnliches getan?Teilen Sie eine Anzahl Array in Gunicorn Prozesse

Antwort

3

Erstellen Sie eine Instanz eines Listeners Server und lassen Sie Ihre Gunicorn-Kinder mit diesem Prozess verbinden, um alle Daten zu holen, die sie als Clients benötigen. Auf diese Weise können die Prozesse die Informationen nach Bedarf ändern und vom Hauptprozess anfordern, anstatt zu Redis zu gehen, um den gesamten Datensatz neu zu laden.

Weitere Informationen hier: Multiprocessing - 16.6.2.10. Listeners and Clients.