Skip to content

Commit 601e090

Browse files
committed
allow for passthrough of event loop in psp webserver handlers
Signed-off-by: Tim Paine <3105306+timkpaine@users.noreply.github.com>
1 parent b9af3bd commit 601e090

4 files changed

Lines changed: 7 additions & 14 deletions

File tree

examples/python-starlette/server.py

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@
1818
import uvicorn
1919

2020
from fastapi import FastAPI, WebSocket
21-
from fastapi.middleware.cors import CORSMiddleware
2221
from starlette.responses import FileResponse
2322
from starlette.staticfiles import StaticFiles
2423

@@ -64,21 +63,12 @@ async def websocket_handler(websocket: WebSocket):
6463
)
6564
await handler.run()
6665

67-
# static_html_files = StaticFiles(directory="../python-tornado", html=True)
6866
static_html_files = StaticFiles(directory="../python-tornado", html=True)
6967

7068
app = FastAPI()
7169
app.add_api_websocket_route("/websocket", websocket_handler)
7270
app.get("/node_modules/{rest_of_path:path}")(static_node_modules_handler)
7371
app.mount("/", static_html_files)
74-
75-
app.add_middleware(
76-
CORSMiddleware,
77-
allow_origins=["*"],
78-
allow_credentials=True,
79-
allow_methods=["*"],
80-
allow_headers=["*"],
81-
)
8272
return app
8373

8474

rust/perspective-python/perspective/handlers/aiohttp.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,11 +37,12 @@ class PerspectiveAIOHTTPHandler(object):
3737
def __init__(self, **kwargs):
3838
self.server = kwargs.pop("perspective_server", perspective.GLOBAL_SERVER)
3939
self._request = kwargs.pop("request")
40+
self._loop = kwargs.pop("loop", asyncio.get_event_loop())
4041
super().__init__(**kwargs)
4142

4243
async def run(self) -> web.WebSocketResponse:
4344
def inner(msg):
44-
asyncio.get_running_loop().create_task(self._ws.send_bytes(msg))
45+
self._loop.create_task(self._ws.send_bytes(msg))
4546

4647
self.session = self.server.new_session(inner)
4748
try:

rust/perspective-python/perspective/handlers/starlette.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,11 +34,12 @@ class PerspectiveStarletteHandler(object):
3434
def __init__(self, **kwargs):
3535
self._server = kwargs.pop("perspective_server", perspective.GLOBAL_SERVER)
3636
self._websocket = kwargs.pop("websocket")
37+
self._loop = kwargs.pop("loop", asyncio.get_event_loop())
3738
super().__init__(**kwargs)
3839

3940
async def run(self) -> None:
4041
def inner(msg):
41-
asyncio.get_running_loop().create_task(self._websocket.send_bytes(msg))
42+
self._loop.create_task(self._websocket.send_bytes(msg))
4243

4344
self.session = self._server.new_session(inner)
4445

rust/perspective-python/perspective/handlers/tornado.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,8 +45,9 @@ class PerspectiveTornadoHandler(WebSocketHandler):
4545
def check_origin(self, origin):
4646
return True
4747

48-
def initialize(self, perspective_server=perspective.GLOBAL_SERVER):
48+
def initialize(self, perspective_server=perspective.GLOBAL_SERVER, loop=None):
4949
self.server = perspective_server
50+
self.loop = loop or IOLoop.current()
5051

5152
def open(self):
5253
def inner(msg):
@@ -63,4 +64,4 @@ def on_message(self, msg: bytes):
6364
return
6465

6566
self.session.handle_request(msg)
66-
IOLoop.current().call_later(0, self.session.poll)
67+
self.loop.call_later(0, self.session.poll)

0 commit comments

Comments
 (0)