Poiché si sta tornando dalla funzione, do_more_stuff non verrà mai chiamato.
Se stai guardando cose pesanti da fare in coda, prima di tornare come suggerisce Ross (+1 per Celery).
se tuttavia stai cercando di restituire del contenuto ... quindi fare qualcosa e restituire più contenuti allo streaming dell'utente è probabilmente quello che stai cercando. È possibile passare un iteratore o un generatore a HttpResponse, e itererà e distribuirà il contenuto in modo ridondante. Ci si sente un po 'schifo, ma se sei un generatore di rockstar potresti essere in grado di fare abbastanza nei vari stati per ottenere ciò che desideri.
O Credo che si potrebbe semplicemente ridisegnare la tua pagina di utilizzare un sacco di Ajax a fare ciò che è necessario, tra cui sparando eventi per Django di vista, la lettura dei dati dalle viste, ecc
E 'sorta di si riduce a dove si trova il peso di async: client, server o risposta.
Non ho ancora familiarità con node.js, ma sarebbe interessante vedere il caso d'uso di cui stai parlando.
EDIT: Ho fatto un po 'di più alla ricerca in segnali, e mentre lo fanno verificarsi nel processo, v'è una costruito nel segnale per request_finished dopo che la richiesta è stata gestita da Django, anche se è più di un ripostiglio che qualcosa specifica.
Inoltre, questo metodo non sarà tecnicamente non bloccante come Django non è un quadro non bloccante nella maggior parte delle implementazioni, ma ti consente di fare qualcosa dopo il ritorno di una risposta. Tornado ti consente di eseguire richieste non bloccanti. – Zack
@Zack: grazie per quello, non mi ero reso conto che i segnali mi avrebbero aiutato in questo. – RadiantHex
Non dimenticare di contrassegnarlo come risposta, se funziona :) – Zack