From 37316d7d1bf1453856956413505eeb72ef9c7296 Mon Sep 17 00:00:00 2001 From: Miguel Grinberg Date: Fri, 16 Oct 2015 07:35:51 -0700 Subject: [PATCH] Addressed additional problems with multi-application support --- flask_socketio/__init__.py | 14 +++++++------- flask_socketio/test_client.py | 4 ++-- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/flask_socketio/__init__.py b/flask_socketio/__init__.py index b893c1af..dd9e8e6f 100644 --- a/flask_socketio/__init__.py +++ b/flask_socketio/__init__.py @@ -9,8 +9,8 @@ class _SocketIOMiddleware(socketio.Middleware): - """This WSGI middleware simply pushes a Flask application context before - before executing the request. + """This WSGI middleware simply exposes the Flask application in the WSGI + environment before executing the request. """ def __init__(self, socketio_app, flask_app, socketio_path='socket.io'): self.flask_app = flask_app @@ -19,9 +19,9 @@ def __init__(self, socketio_app, flask_app, socketio_path='socket.io'): socketio_path) def __call__(self, environ, start_response): - with self.flask_app.app_context(): - return super(_SocketIOMiddleware, self).__call__(environ, - start_response) + environ['flask.app'] = self.flask_app + return super(_SocketIOMiddleware, self).__call__(environ, + start_response) class SocketIO(object): @@ -127,8 +127,8 @@ def handle_my_custom_event(json): def decorator(handler): def _handler(sid, *args): - with flask.current_app.request_context( - self.server.environ[sid]): + app = self.server.environ[sid]['flask.app'] + with app.request_context(self.server.environ[sid]): if 'saved_session' in self.server.environ[sid]: self._copy_session( self.server.environ[sid]['saved_session'], diff --git a/flask_socketio/test_client.py b/flask_socketio/test_client.py index ebd085fb..f38dcb7c 100644 --- a/flask_socketio/test_client.py +++ b/flask_socketio/test_client.py @@ -39,8 +39,8 @@ def _mock_send_packet(sid, pkt): def connect(self, namespace=None): """Connect the client.""" environ = EnvironBuilder('/socket.io').get_environ() - with self.app.app_context(): - self.socketio.server._handle_eio_connect(self.sid, environ) + environ['flask.app'] = self.app + self.socketio.server._handle_eio_connect(self.sid, environ) if namespace is not None and namespace != '/': pkt = packet.Packet(packet.CONNECT, namespace=namespace) with self.app.app_context():