def run_realtime(cls): event_loop = asyncio.new_event_loop() cls.event_loop = event_loop asyncio.set_event_loop(event_loop) userlog_settings = util.get_userlog_settings() uri = websockets.parse_uri(userlog_settings.websocket_address) start_server = websockets.serve(realtime.userlog, uri.host, uri.port) cls.realtime_server = event_loop.run_until_complete(start_server) event_loop.run_until_complete(cls.realtime_server.wait_closed()) event_loop.close()
def run_realtime(cls): event_loop = asyncio.new_event_loop() asyncio.set_event_loop(event_loop) # required by asyncio_redis userlog_settings = util.get_userlog_settings() uri = websockets.parse_uri(userlog_settings.websocket_address) start_server = websockets.serve( realtime.userlog, uri.host, uri.port, loop=event_loop) stop_server = asyncio.Future(loop=event_loop) cls.stop_realtime_server = lambda: event_loop.call_soon_threadsafe( lambda: stop_server.set_result(True)) realtime_server = event_loop.run_until_complete(start_server) event_loop.run_until_complete(stop_server) realtime_server.close() event_loop.run_until_complete(realtime_server.wait_closed()) event_loop.close()
def run_realtime(cls): event_loop = asyncio.new_event_loop() asyncio.set_event_loop(event_loop) # required by asyncio_redis userlog_settings = util.get_userlog_settings() uri = websockets.parse_uri(userlog_settings.websocket_address) start_server = websockets.serve(realtime.userlog, uri.host, uri.port, loop=event_loop) stop_server = asyncio.Future(loop=event_loop) cls.stop_realtime_server = lambda: event_loop.call_soon_threadsafe( lambda: stop_server.set_result(True)) realtime_server = event_loop.run_until_complete(start_server) event_loop.run_until_complete(stop_server) realtime_server.close() event_loop.run_until_complete(realtime_server.wait_closed()) event_loop.close()
for item in reversed(list(log)): item = yield from item yield from websocket.send(item) # Stream new lines subscriber = yield from redis.start_subscribe() yield from subscriber.subscribe([channel]) while True: reply = yield from subscriber.next_published() if not websocket.open: break yield from websocket.send(reply.value) finally: redis.close() if __name__ == '__main__': # pragma: no cover django.setup() uri = websockets.parse_uri(get_userlog_settings().websocket_address) if uri.secure: raise ValueError("SSL support requires explicit configuration") start_server = websockets.serve(userlog, uri.host, uri.port) asyncio.get_event_loop().run_until_complete(start_server) try: asyncio.get_event_loop().run_forever() except KeyboardInterrupt: pass
subscriber = yield from redis.start_subscribe() yield from subscriber.subscribe([channel]) while True: reply = yield from subscriber.next_published() line = reply.value try: yield from websocket.send(line) except websockets.ConnectionClosed: return finally: redis.close() # Loop one more time to complete the cancellation of redis._reader_f, # which runs redis._reader_coroutine(), after redis.connection_lost(). yield from asyncio.sleep(0) if __name__ == '__main__': # pragma: no cover django.setup() uri = websockets.parse_uri(get_userlog_settings().websocket_address) if uri.secure: raise ValueError("SSL support requires explicit configuration") start_server = websockets.serve(userlog, uri.host, uri.port) asyncio.get_event_loop().run_until_complete(start_server) try: asyncio.get_event_loop().run_forever() except KeyboardInterrupt: pass