2013-08-12 10 views
6

Buongiorno,Utilizzando Flask Session Gevent Socket-IO

Ho avuto qualche problema e spero qualcuno sarà in grado di darmi una mano un po 'qui. Quello che sto cercando di fare è accedere alla Flask Session all'interno di uno spazio Gevent Socket-IO Name.

Ho provato ad utilizzare il beaker come client middle ware e non riesco ancora ad accedere a & aggiornare le informazioni sulla sessione da uno spazio dei nomi socket-io.

Sono abbastanza nuovo a tutto questo quindi qualsiasi aiuto sarebbe molto apprezzato.

risposta

3

Con la sessione predefinita di Flask, sembra possibile condividere (con accesso in sola lettura) i dati di sessione nel momento in cui lo spazio dei nomi viene inizializzato.

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

session_dict è quindi accessibile come self.request nello spazio dei nomi. Questo è un hack, ma le sessioni Flask/werkzeug non sembrano funzionare al di fuori del contesto della richiesta.

Ho inserito un ID sessione (uuid generato a caso) nella sessione Flask. Quindi, sia le viste Flask che lo spazio dei nomi conoscono entrambi l'ID di sessione ed entrambi possono leggere/scrivere dati in una sessione lato server in Redis o in qualche altro datastore, con ID di sessione come chiave.

Questa è solo la soluzione che sto utilizzando per condividere le sessioni tra Flask e gevent-socketio; Non ho provato Beaker e non sono sicuro di quali problemi specifici hai usato per usarlo, o se c'è una soluzione migliore.

Problemi correlati