ich derzeit versuche gevent-socketio über mehrere Arbeiter mit dem gunicorn Server skaliert mit dem Arbeiter socketio.sgunicorn.GeventSocketIOWorker. Ich benutze Websockets, wenn es existiert, sonst erzwinge ich XHR-Polling (für IE usw.).Mehrere Arbeiter mit GEVENT-socketio nicht mit XHR-Polling-Transport wegen der Sitzungen
XHR-Polling benötigt eine Sitzung, um die folgenden Umfragen zu verfolgen, aber sobald ich von einem zu zwei oder mehr Arbeitern gehe, beginnen sich die Anfragen zwischen sich auszubreiten, was bedeutet, dass der Zustand verloren geht und alles zusammenbricht.
Ich denke, die folgenden Codezeilen sind relevant: https://github.com/abourget/gevent-socketio/blob/master/socketio/handler.py#L104-106 Ich glaube, ich brauche ein anderes Speicher-Engine, zum Beispiel redis, die ich für die regelmäßigen PubSub-Aktionen verwenden, aber das ist tief im Innern der eigentlichen Bibliothek.
So ist meine Frage, wie kann ich von In-Memory-Sitzungsspeicher zu einer anderen Backend-Engine global in meiner Anwendung gehen (funktioniert es graziös den Sitzungscode in dem obigen Link außer Kraft setzen?) ohne die Bibliothek zu modifizieren selbst? Something like PHP's session directives in php.ini. Ich nehme an, es könnte argumentiert werden, dass dies eine sehr generische Python-Frage ist, aber ich habe Probleme, relevante Informationen zu finden, und ich bin mir auch nicht sicher, ob es für diese Bibliothek funktioniert.
Oder wie kann ich den xhr-polling-Transport von gevent-socketio über verschiedene Workers und Server hinweg (ohne Stickies) nutzen?
Danke!
Nur eine Idee: Sitzungsspezifische Informationen in Cookies speichern? Eine Art REST. –
@moodh Hast du das jemals gelöst? Helfen auch mehrere Arbeiter wirklich? Gevent selbst erledigt bereits viele Anrufe in einer einzigen Ereignisschleife. – pors
Nein, ich gab auf und begann stattdessen http://pusher.com/. Es gibt einige Tickets in gevent-socketio (https://github.com/abourget/gevent-socketio/issues/112) bezüglich dieses Problems, aber ich weiß nicht, wie weit sie gekommen sind. Sorry :) – moodh