コード例 #1
0
ファイル: tests.py プロジェクト: dot-Sean/django-userlog
    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()
コード例 #2
0
ファイル: tests.py プロジェクト: aaugustin/django-userlog
    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()
コード例 #3
0
    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()
コード例 #4
0
ファイル: realtime.py プロジェクト: dot-Sean/django-userlog
            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
コード例 #5
0
            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