2015-05-28 16 views
6

In che modo Django gestisce più utenti? So che Apache crea un nuovo thread e expressjs utilizza metodi asincroni. Ma non capisco Django perché funziona in modo sincrono, non rallenterebbe il processo se ci sono più di 2-3 utenti?In che modo django gestisce più utenti

Grazie

risposta

7

Django è un'applicazione WSGI, che è una differenza fondamentale da un server (WSGI) come Apache. Node.js/Express.js contiene il proprio server web per sostituire Apache. Django deve essere servito da un server web di tua scelta.

L'unico lavoro di Django è quello di essere thread-safe. Tutti gli altri aspetti delle richieste concorrenti vengono gestiti dal tuo server web.

4

Supponendo che la tua preoccupazione riguardi più connessioni/richieste in generale e non utenti in particolare, dovrei dire quanto segue su Django e thread.

Django è sicuramente thread-safe. È una considerazione progettuale che ha occupato diverse persone nel passato, come qualcuno che segue lo sviluppo di Django può osservare.

Per questo motivo, Django può essere deployed in un contenitore multi-threadato come il thread predefinito mod_wsgi che funziona con il server Apache e come tale è stato valutato da molte distribuzioni.

Ci sono comunque dubbi su come thread-safe sia una particolare applicazione basata su Django, e questo dipende dalla discrezione dei singoli sviluppatori e manutentori nell'usare le migliori pratiche.

Nella documentazione di Django ci sono sezioni particolari dedicate alla sicurezza dei fili. Ad esempio, lo class-based views documentation indica specificamente che ogni vista basata su classi ha uno stato indipendente. Inoltre, una preoccupazione molto comune sono i tag modello personalizzati, come indirizzo in this section. Sono sicuro che ci sono anche altri riferimenti all'argomento che attualmente mi mancano, quindi consiglierei di tenere la documentazione a portata di mano se i problemi relativi alla sicurezza dei thread sono troppo grandi.

3

Django non fa nulla per gestire questo. È del tutto il lavoro di qualunque server serva Django, sia Apache, gunicorn, uwsgi o qualsiasi altra cosa. Questi server sono responsabili della gestione dei thread o dei processi per soddisfare più richieste.

Problemi correlati