Aufteilen statischer globaler Daten zwischen Prozessen in einer Gunicorn / Flask-App

Ich habe eine Flask-App unter Gunicorn, die den Sync-Worker-Typ mit 20 Worker-Prozessen verwendet. Die App liest beim Start viele Daten, was Zeit kostet und Speicherplatz beansprucht. Schlimmer noch, jeder Prozess lädt seine eigene Kopie, was dazu führt, dass er noch länger dauert und 20-mal mehr Speicher benötigt. Die Daten sind statisch und ändern sich nicht. Ich möchte es einmal laden und alle 20 Arbeiter teilen lassen.

Wenn ich das @ benutpreload_app Einstellung, es wird nur in einem Thread geladen und nimmt anfangs nur 1X Speicher in Anspruch, scheint dann aber auf 20X zu steigen, sobald Anfragen eingehen. Ich brauche schnellen wahllosen Zugriff auf die Daten, also würde ich es lieber nicht tun IPC.

ibt es eine Möglichkeit, statische Daten zwischen Gunicorn-Prozessen auszutausche

Antworten auf die Frage(2)

Ihre Antwort auf die Frage