Ich habe ziemlich Standard Django + Rabbitmq + Sellerie Setup mit 1 Sellerie Aufgabe und 5 Arbeiter.Weltweit zugängliches Objekt über alle Sellerie-Arbeiter/Memory-Cache in Django
Aufgabe Uploads das gleiche (ich vereinfache ein bisschen) große Datei (~ 100MB) asynchron zu einer Reihe von Remote-PCs.
Alles funktioniert gut auf Kosten der Verwendung von viel Speicher, da jede Aufgabe/Arbeiter diese große Datei in den Speicher separat laden.
Was ich tun möchte, ist eine Art von Cache, zugänglich für alle Aufgaben, d. H. Laden Sie die Datei nur einmal. Django Caching basierend auf Locmem wäre perfekt, aber wie Dokumentation sagt: "Jeder Prozess wird seine eigene private Cache-Instanz haben" und ich brauche diesen Cache für alle Arbeiter zugänglich.
Versucht, mit Sellerie-Signalen wie in #2129820 beschrieben zu spielen, aber das ist nicht was ich brauche.
Also die Frage ist: Gibt es eine Möglichkeit, etwas Global in Sellery zu definieren (wie eine Klasse basierend auf Diktat, wo ich die Datei oder smth laden konnte). Oder gibt es einen Django-Trick, den ich in dieser Situation anwenden könnte?
Danke.
Ich habe darüber nachgedacht, aber der größte Wert, den man in Memcached speichern kann, ist 1 MB. –
Warum nicht die Datei partitionieren? Und wenn jede Aufgabe Zugriff auf jedes Bit dieser Datei erfordert, gibt es keine Möglichkeit, das Laden jedes Mal zu vermeiden. –
Nun, ich hoffe, es ist möglich :). Die Partitionierung würde die Komplexität erhöhen und ich denke, es sollte einen einfachen Weg geben, dies anzugehen. –