Obecnie próbuję skalować gevent-socketio w wielu robotników z serwerem gunicorn pomocą pracownika socketio.sgunicorn.GeventSocketIOWorker. Używam websockets gdy istnieje inaczej wymuszam XHR-polling (dla IE itp.).Wiele pracownicy gevent-socketio nie z transportem XHR-wyborczym z powodu sesji
Ankieta XHR wymaga sesji, w której można śledzić następujące ankiety, ale gdy tylko przejdę od jednego do dwóch lub więcej pracowników, prośby zaczynają się rozprzestrzeniać między sobą, co oznacza, że państwo zostaje utracone, a wszystko zepsuje się.
myślę następujące linie kodu jest istotne: https://github.com/abourget/gevent-socketio/blob/master/socketio/handler.py#L104-106 Chyba potrzebuję trochę inny silnik składowania, na przykład REDiS którego używam do regularnych PubSub-działań, ale jest to głęboko wewnątrz rzeczywistej biblioteki.
Więc moje pytanie brzmi: w jaki sposób przejść od w pamięci przechowywania sesji na innym silniku backend globalnie w mojej aplikacji (czy to z wdziękiem nadpisać kod sesji w linku powyżej?) bez konieczności modyfikowania samej biblioteki? Something like PHP's session directives in php.ini. Przypuszczam, że można argumentować, że jest to bardzo ogólne pytanie pythonowe, ale mam problem ze znalezieniem odpowiednich informacji, a także nie jestem pewien, czy zadziała w tej bibliotece.
lub alternatywnie, w jaki sposób korzystać z transportu XHR-odpytywania gevent-socketio w poprzek różnych pracowników i serwerów (bez stickyness)?
Dzięki!
Pomysł: zachować informacje o sesji w plikach cookie? Rodzaj REST. –
@moodh Czy kiedykolwiek rozwiązałeś to? Co więcej, czy wielu pracowników naprawdę pomaga? Sam Gevent świetnie sobie radzi z obsługą wielu połączeń w jednej pętli zdarzeń. – pors
Nie, zrezygnowałem i zacząłem używać http://pusher.com/. Jest kilka biletów w gevent-socketio (https://github.com/abourget/gevent-socketio/issues/112) w związku z tym problemem, ale nie wiem, jak daleko zaszły. Przepraszam :) – moodh