语境
我正在使用RxPY启用通过 websockets 发送基于推送的事件。我在带有gevent的Flask服务器中使用烧瓶套接字。events 类包含一个充当事件发布者的rx.subject.BehaviorSubject,而 websocket 客户端订阅更改。
问题
我希望能够检测到客户端何时断开连接,以便正确处理资源。问题是当套接字断开连接并ws.send
引发异常但它在 lambda 内时。
解决方案?
有没有办法将异常传递给父函数?
另一种解决方案是在不调用的情况下检测 websocket 断开连接,并且可以在 lambda 之外进行检查,尽管我在烧瓶套接字库中ws.send
找不到这种方法。
@sockets.route('/ws/events')
def wsEvents(ws):
sub = None
disp = None
try:
print("socket opened")
def update_fn(x):
print(x)
ws.send(json.dumps(x))
sub = events.get_sub(None)
if sub is not None:
disp = sub.subscribe(lambda x: update_fn(x))
else:
raise Exception('Undefined sub')
while not ws.closed:
gevent.sleep(1)
pass
except Exception as e:
print(e)
finally:
print("socket closed")
if disp is not None:
disp.dispose()