Domanda

Ho bisogno di aiuto per capire quale sia il vantaggio dell'utilizzo di un framework asincrono. Supponiamo che io voglia sviluppare una semplice app web di chat. Perché non riesco a scrivere codice Python nel framework Django che esegue un polling lungo in cui non rispondo al server finché non viene inserito un nuovo messaggio. Cosa offre Twisted che offre un vantaggio per le app in tempo reale come l'app di chat?

Mi dispiace, ovviamente, sono poco confuso riguardo alla necessità di un framework asincrono.

È stato utile?

Soluzione

I server asincroni supportano un numero molto maggiore di connessioni client simultanee. I server più convenzionali si scontrano con i limiti di thread e processi durante la manutenzione di un gran numero di client simultanei, in particolare quelli con connessioni di lunga durata. I server asincroni possono anche fornire prestazioni migliori poiché evitano i costi generali di es. cambio di contesto di thread.

Oltre al framework Twisted , ci sono anche blocchi di server asincroni nella libreria standard di Python: precedentemente asyncore e asynchat , ma ora anche asyncio .

Altri suggerimenti

Prima di tutto Django è un framework per la scrittura di app Web, quindi fornisce ORM, template HTML, richiede l'esecuzione di un server http ecc. Twisted aiuta a scrivere codice di livello molto più basso di quello. Puoi usare twisted per scrivere il server http su cui gira Django. Se usi Django sei limitato al modello http, con twisted potrebbe comunicare in qualsiasi protocollo che ti piace, inclusi i protocolli push. Quindi, per il tuo esempio di chat, ottieni un server che si adatta meglio poiché può inviare commenti alle persone che hanno effettuato l'accesso VS con django ogni client deve eseguire il polling ripetutamente.

modificato per riflettere i commenti di: sos-skyl

Il più grande vantaggio per me è che Twisted mi offre un'applicazione che ha stato e può comunicare con molti client diversi usando molti protocolli.

Per me, il mio server Twisted comunica con una serie di sensori installati in case e aziende che monitorano il consumo di energia. Memorizza i dati e mantiene i dati recenti e lo stato in classi pitone a portata di mano in memoria. Le richieste via xmlrpc di django ottengono questo stato e possono presentare all'utente dati recenti. Le mie cose su Gridspy sono ancora in fase di sviluppo, quindi il sito reale su your.gridspy.co.nz è un po 'pre-alfa.

La parte migliore è che hai bisogno di un codice sorprendentemente piccolo per creare un server efficace. Gran parte del lavoro è fatto per te.

In twisted puoi implementare i tuoi protocolli. Django non può certo farlo.

Puoi utilizzare WHIFF invece di uno :). Check-out http://aaron.oirt.rutgers.edu/myapp/gfChat/nucularChatRoom che utilizza un ciclo di polling javascript con json per verificare per gli aggiornamenti del server. Probabilmente potresti fare qualcosa di simile in Django, ma non so come, perché ho rinunciato a Django.

btw: spero di spostare questa demo sul motore dell'app di Google come servizio più completo quando la mia vita si calma un po '.

Se desideri cercare una fonte per l'integrazione di Twisted e Django, dai un'occhiata a Yardbird .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top