2013-08-12 10 views
6

dobry,Korzystanie Flask Sesja w Gevent Socket-IO

I zostały niektóre problemy i mam nadzieję, że ktoś będzie w stanie mi pomóc trochę tutaj. Co próbuję zrobić, to dostęp do sesji Flask w przestrzeni Gevent Socket-IO Name.

Próbowałem użyć zlewki jako klienta middle ware i nadal nie mogę uzyskać dostępu do informacji o sesji z poziomu przestrzeni nazw socket-io.

Jestem całkiem nowy w tym wszystkim, więc każda pomoc będzie bardzo ceniona.

Odpowiedz

3

Przy domyślnej sesji Flask wydaje się możliwe udostępnianie (z dostępem tylko do odczytu) danych sesji w momencie zainicjowania przestrzeni nazw.

session_dict=dict(session) 
socketio_manage(request.environ, {'/news': NewsNamespace}, request=session_dict) 

session_dict jest wtedy dostępny jako self.request w przestrzeni nazw. To jest hack, ale sesje Flask/werkzeug nie działają i tak poza kontekstem żądania.

Umieszczam identyfikator sesji (wygenerowany losowo uuid) w sesji Flask. Następnie zarówno widoki Flask, jak i przestrzeń nazw, zarówno znają identyfikator sesji, jak i oba mogą czytać/zapisywać dane w sesji po stronie serwera w Redis lub innym magazynie danych, z identyfikatorem sesji jako kluczem.

To jest właśnie rozwiązanie, którego używam do udostępniania sesji między Flask i gevent-socketio; Nie próbowałem Beaker i nie jestem pewien, jakie masz problemy z jego używaniem lub czy istnieje lepsze rozwiązanie.

Powiązane problemy