Ho implementato una chat, utilizzando un sondaggio ajax lungo e Gevent. Per leggere, il client aggiorna la vista di aggiornamento e attendi con Gevent.event.wait per un aggiornamento.Django, Ajax polling lungo, Postgresql: transazione inattiva
Problema: La transazione Postgresql aperta da Django all'inizio di una richiesta (per ottenere informazioni sulla sessione) non viene chiusa fino alla fine della richiesta. E quelle transazioni inattive prendono molta memoria.
Quale sarebbe il modo più pulito per chiudere la transazione Postgresql senza chiudere la richiesta? Attualmente sto inviando manualmente il segnale request_finished ma sembra un trucco.
Abbiamo perso molto tempo cercando di fare funzionare socketio tramite nginx (front-end) con gevent/gunicorn/apache (back-end). Nginx non è in grado di farlo senza un'alta quantità di mod. E anche con quelli, non siamo stati in grado di collegare l'ID utente socketio con l'id della sessione django, quindi non siamo stati in grado di ottenere le informazioni dell'utente. Se hai un tutorial completo da consigliare, ci piacerebbe vederlo. La maggior parte del tutorial di socketio - chat che abbiamo trovato, non usa le informazioni utente di django o un front end. – Ashe
Per quanto riguarda il funzionamento dei backend di SocketIO e django: https://gist.github.com/fd8e9631368e447de702 –
Per essere onesti, non eseguiremo il rollback adesso, ma lo terremo definitivamente per dopo. Grazie. – Ashe