2010-02-13 5 views
6

Ich möchte meine App eine MemoryError werfen, wenn ihre Verwendung über 1 GB geht. Ich laufe im WSGI-Daemon-Modus.Wie können Sie ein Speicherlimit in Django WSGI-Apps erzwingen?

Ich sehe 3 Plätze die Speichergrenze sein könnte:

  • apache.conf
  • wsgi irgendwo
  • django Konfiguration

aber ich kann nicht finden, die richtigen Konfigurationsoptionen. In PHP können Sie dies mit:

php_value memory_limit 1GB

in Ihrem apache.conf

Antwort

2
+0

aus irgendeinem Grund, Ressource hat das nicht auf meinem Debian-System (Python 2.5) >>> Verzeichnis (Ressource) ['RLIMIT_AS', 'RLIMIT_CORE', 'RLIMIT_CPU', 'RLIMIT_DATA', 'RLIMIT_FSIZE' , "RLIMIT_MEMLOCK", "RLIMIT_NOFILE", "RLIMIT_NPROC", "RLIMIT_OFILE", "RLIMIT_RSS", "RLIMIT_STACK", "RLIM_INFINITY", "RUSAGE_CHILDREN", "RUSAGE_SELF", "__doc__", "__file__", "__name__", " __package__ ',' error ',' getpagesize ',' getrlimit ','getrusage', 'setrlimit', 'struct_rusage'] 'Welche dieser Konstanten bedeutet dasselbe? –

+1

Sie könnten wahrscheinlich mit 'resource.RLIMIT_RSS' durchkommen. –

3

Ressourcenspeicherbegrenzungen sind auf den meisten Plattformen nicht implementiert, obwohl C-API-Definitionen vorhanden sind. Daher versucht mod_wsgi nicht, solche Einschränkungen zu implementieren. Wenn PHP es tut, ist es in der Lage, dies zu tun, indem es eine eingeschränktere und kontrollierte Umgebung als Python ist. Der einzige portable Weg besteht darin, einen separaten Daemon-Prozess auszuführen, der 'ps' ausführt oder '/ proc' verwendet, um die Speichernutzung von Prozessen zu überwachen und dann ein SIGINT-Signal an solche zu senden, die einen vordefinierten Wert überschreiten.


UPDATE

Version 3.4 von mod_wsgi unterstützt Optionen für Daemon-Modus in der Lage sein kann, die Speichernutzung zu beschränken. Siehe:

Ob sie auf dem Betriebssystem arbeiten, hängt Sie verwenden.

+0

Huch, das hört sich rau an. Andere Leute müssen dieses Problem auch richtig lösen? Gibt es einen Standard-Daemon, um diese Aufgabe zu erledigen? –

Verwandte Themen