В настоящее время я пытаюсь масштабировать gevent-socketio между несколькими рабочими серверами с сервером пушки, используя рабочий < strong>socketio.sgunicorn.GeventSocketIOWorker. Я использую веб-сокеты, когда они существуют, в противном случае я заставляю XHR-опрос (для IE и т. д.).
XHR-опросу нужен сеанс, чтобы отслеживать следующие опросы, но как только я перехожу от одного к двум или более воркерам, запросы начинают распространяться между собой, что означает потерю состояния и все ломается.
Я думаю, что следующие строки кода имеют значение: https://github.com/abourget/gevent-socketio/blob/master/socketio/handler.py#L104-106 Полагаю, мне нужен какой-то другой механизм хранения, например redis, который я использую для обычного pubsub -actions, но это глубоко внутри реальной библиотеки.
Итак, мой вопрос заключается в том, как мне перейти от хранилища сеансов в памяти к другому серверному движку глобально в моем приложении (изящно ли он переопределяет код сеанса в приведенной выше ссылке?) без необходимости изменять саму библиотеку ? Что-то вроде директив сеанса PHP в php.ini а>. Я полагаю, что можно привести аргумент, что это очень общий вопрос о питоне, но у меня возникли проблемы с поиском соответствующей информации, и я также не уверен, что это сработает для этой библиотеки.
Или, в качестве альтернативы, как мне использовать транспорт xhr-опроса gevent-socketio между разными рабочими и серверами (без прилипания)?
Спасибо!