2010-02-13 8 views
6

Voglio che la mia app lanci uno MemoryError quando il suo utilizzo supera 1 GB. Sono in esecuzione in modalità daemon WSGI.Come si può forzare un limite di memoria nelle app Django WSGI?

Vedo 3 posti il ​​limite di memoria potrebbe essere:

  • apache.conf
  • WSGI da qualche parte
  • configurazione Django

ma non riesco a trovare le opzioni di configurazione di destra. In PHP si può fare questo con:

php_value memory_limit 1GB

nel vostro apache.conf

risposta

2
+0

per qualche motivo, risorsa non ha questo sul mio sistema debian (Python 2.5) '>>> dir (risorse) [ '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 '] 'Quale di queste costanti significa la stessa cosa? –

+1

Probabilmente potresti andare via con 'resource.RLIMIT_RSS'. –

3

I limiti di memoria delle risorse non sono implementati sulla maggior parte delle piattaforme anche se esistono definizioni API C. In quanto tale, mod_wsgi non tenta di implementare tali restrizioni. Se PHP lo sta facendo, è in grado di farlo in virtù del fatto che è un ambiente più limitato e controllato rispetto a Python.

L'unico modo portatile è quello di avere un funzionamento processo demone separato che gestisce 'ps' o usa '/ proc' per monitorare l'utilizzo della memoria dei processi e quindi inviare un segnale SIGINT a quelle che andare oltre un certo valore predefinito.


UPDATE

versione 3.4 di mod_wsgi supporta opzioni per la modalità demone che può essere in grado di limitare l'utilizzo della memoria. Vedere:

Sia che lavorano dipende dal sistema operativo utilizzato.

+0

yikes, sembra difficile. Altre persone devono risolvere questo problema, giusto? C'è un demone standard per fare questo lavoro? –

Problemi correlati