Zaimplementowałem czat, używając długiego sondowania ajax i Gevent. Aby przeczytać, klient ajax widok aktualizacji i czekać z Gevent.event.wait na aktualizację.Django, Ajax long polling, Postgresql: bezczynna transakcja
Problem: Transakcja PostgreSQL uruchomiona przez Django na początku żądania (aby uzyskać informacje o sesji) nie jest zamykana do końca żądania. A te bezczynne transakcje zabierają dużo pamięci.
Jaki byłby najczystszy sposób zamknięcia transakcji PostgreSQL bez zamykania żądania? Obecnie wysyłam ręcznie sygnał request_finished request, ale wydaje mi się, że jest to hack.
Straciliśmy długi czas, próbując sprawić, by socketio działało poprzez nginx (front end) z gevent/gunicorn/apache (back end). Nginx nie może tego zrobić bez dużej ilości modów. I nawet z tymi, nie byliśmy w stanie połączyć identyfikatora użytkownika socketio z identyfikatorem sesji django, więc nie byliśmy w stanie uzyskać informacji o użytkowniku. Jeśli masz kompletny samouczek do rekomendacji, chcielibyśmy go zobaczyć. Większość tutorialu z samouczkami socketio, które znaleźliśmy, nie używa informacji django użytkownika ani interfejsu użytkownika. – Ashe
Jeśli chodzi o tworzenie backendów SocketIO i django auth: https://gist.github.com/fd8e9631368e447de702 –
Szczerze mówiąc, nie wycofamy się teraz, ale ostatecznie zachowamy to na później. Dziękuję Ci. – Ashe