コード例 #1
0
def Loop():
    loop = asyncio.get_event_loop_policy().new_event_loop()
    asyncio.set_event_loop(loop)
    try:
        yield loop
    finally:
        loop.close()
コード例 #2
0
ファイル: test_base_events.py プロジェクト: sshyran/trollius
    def test_log_slow_callbacks(self, m_logger):
        def stop_loop_cb(loop):
            loop.stop()

        @asyncio.coroutine
        def stop_loop_coro(loop):
            yield From(None)
            loop.stop()

        asyncio.set_event_loop(self.loop)
        self.loop.set_debug(True)
        self.loop.slow_callback_duration = 0.0

        # slow callback
        self.loop.call_soon(stop_loop_cb, self.loop)
        self.loop.run_forever()
        fmt = m_logger.warning.call_args[0][0]
        args = m_logger.warning.call_args[0][1:]
        self.assertRegex(
            fmt % tuple(args), "^Executing <Handle.*stop_loop_cb.*> "
            "took .* seconds$")

        # slow task
        asyncio. async (stop_loop_coro(self.loop), loop=self.loop)
        self.loop.run_forever()
        fmt = m_logger.warning.call_args[0][0]
        args = m_logger.warning.call_args[0][1:]
        self.assertRegex(
            fmt % tuple(args), "^Executing <Task.*stop_loop_coro.*> "
            "took .* seconds$")
コード例 #3
0
def asyloop(loop, sock, camera):
    asyncio.set_event_loop(loop)
    tasks = [
        # asyncio.async(video()),
        asyncio. async (slackServer(sock, camera)),
    ]
    loop.run_until_complete(asyncio.wait(tasks))
コード例 #4
0
ファイル: test_base_events.py プロジェクト: sshyran/trollius
    def test_default_exc_handler_coro(self):
        self.loop._process_events = mock.Mock()
        self.loop.set_debug(True)
        asyncio.set_event_loop(self.loop)

        @asyncio.coroutine
        def zero_error_coro():
            yield From(asyncio.sleep(0.01, loop=self.loop))
            1 / 0

        # Test Future.__del__
        with mock.patch('trollius.base_events.logger') as log:
            fut = asyncio. async (zero_error_coro(), loop=self.loop)
            fut.add_done_callback(lambda *args: self.loop.stop())
            self.loop.run_forever()
            fut = None  # Trigger Future.__del__ or futures._TracebackLogger
            support.gc_collect()
            if PY34:
                # Future.__del__ in Python 3.4 logs error with
                # an actual exception context
                log.error.assert_called_with(
                    test_utils.MockPattern('.*exception was never retrieved'),
                    exc_info=(ZeroDivisionError, MOCK_ANY, MOCK_ANY))
            else:
                # futures._TracebackLogger logs only textual traceback
                log.error.assert_called_with(test_utils.MockPattern(
                    '.*exception was never retrieved.*ZeroDiv'),
                                             exc_info=False)
コード例 #5
0
def run(driver, time_out):
    loop = new_event_loop()
    set_event_loop(loop)
    ensure_future(control_loop(driver, time_out, loop))
    loop.run_forever()
    loop.close()
    return (distance_to_goal, left_velocity, right_velocity)
コード例 #6
0
def run_main_loop(G):
    '''
    This runs the stopingibition/visual/audio part of the paradigm using
    asyncio-replacement trollius. Before and after, we can still present
    other stimuli.
    '''

    # something like this:
    # mainClock=clock.Clock()
    # mainClockContainer[0]=mainClock # put it into my list, that double-serves
    # as a pointer

    loop = asyncio.new_event_loop()
    asyncio.set_event_loop(loop)
    #tasks = [
    #    asyncio.async(handleVisual()),
    #    asyncio.async(handleGonogo()),
    #    asyncio.async(handleEscape()),
    #    ]
    tasks_dbg = [
        # asyncio.async(handle_exception(test_it,G,loop)),
        asyncio. async (handle_exception(handle_audio, G, loop)),
        asyncio. async (handle_exception(handle_visual, G, loop)),
        asyncio. async (handle_exception(handle_gonogo, G, loop)),
        #asyncio.async(handle_exception(handle_visual,loop)),
    ]

    tasks = [
        # asyncio.async(test_it(G)),
        # asyncio.async(handle_audio(G))
    ]

    # so to debug, just run tasks_dbg instead of tasks.
    loop.run_until_complete(asyncio.wait(tasks_dbg))
    loop.close()
コード例 #7
0
    def test_default_exc_handler_coro(self):
        self.loop._process_events = mock.Mock()
        self.loop.set_debug(True)
        asyncio.set_event_loop(self.loop)

        @asyncio.coroutine
        def zero_error_coro():
            yield From(asyncio.sleep(0.01, loop=self.loop))
            1 / 0

        # Test Future.__del__
        with mock.patch("trollius.base_events.logger") as log:
            fut = asyncio.async(zero_error_coro(), loop=self.loop)
            fut.add_done_callback(lambda *args: self.loop.stop())
            self.loop.run_forever()
            fut = None  # Trigger Future.__del__ or futures._TracebackLogger
            support.gc_collect()
            if PY34:
                # Future.__del__ in Python 3.4 logs error with
                # an actual exception context
                log.error.assert_called_with(
                    test_utils.MockPattern(".*exception was never retrieved"),
                    exc_info=(ZeroDivisionError, MOCK_ANY, MOCK_ANY),
                )
            else:
                # futures._TracebackLogger logs only textual traceback
                log.error.assert_called_with(
                    test_utils.MockPattern(".*exception was never retrieved.*ZeroDiv"), exc_info=False
                )
コード例 #8
0
 def setUp(self):
     trollius.set_event_loop(None)
     self.loop = trollius.new_event_loop()
     self.loop.set_debug(True)
     self.cluster = Cluster()
     self.session = self.cluster.connect()
     aiosession(self.session, loop=self.loop)
コード例 #9
0
def run(driver, time_out):
    loop = new_event_loop()
    set_event_loop(loop)
    ensure_future(control_loop(driver, time_out, loop))
    loop.run_forever()
    loop.close()
    return (distance_to_goal, left_velocity, right_velocity)
コード例 #10
0
 def run(self, driver, time_out):
     self.loop = new_event_loop()
     set_event_loop(self.loop)
     ensure_future(self.control_loop(driver, time_out))
     self.loop.run_forever()
     self.loop.close()
     return (self.distance_to_goal, self.left_velocity, self.right_velocity)
コード例 #11
0
ファイル: cachesvr.py プロジェクト: JioCloudCompute/trollius
def main():
    asyncio.set_event_loop(None)
    if args.iocp:
        from trollius.windows_events import ProactorEventLoop
        loop = ProactorEventLoop()
    else:
        loop = asyncio.new_event_loop()
    sslctx = None
    if args.tls:
        import ssl
        # TODO: take cert/key from args as well.
        here = os.path.join(os.path.dirname(__file__), '..', 'tests')
        sslctx = asyncio.SSLContext(ssl.PROTOCOL_SSLv23)
        sslctx.options |= ssl.OP_NO_SSLv2
        sslctx.load_cert_chain(
            certfile=os.path.join(here, 'ssl_cert.pem'),
            keyfile=os.path.join(here, 'ssl_key.pem'))
    cache = Cache(loop)
    task = asyncio.streams.start_server(cache.handle_client,
                                        args.host, args.port,
                                        ssl=sslctx, loop=loop)
    svr = loop.run_until_complete(task)
    for sock in svr.sockets:
        logging.info('socket %s', sock.getsockname())
    try:
        loop.run_forever()
    finally:
        loop.close()
コード例 #12
0
ファイル: cachesvr.py プロジェクト: GitBubble/bootstrap-ros
def main():
    asyncio.set_event_loop(None)
    if args.iocp:
        from trollius.windows_events import ProactorEventLoop
        loop = ProactorEventLoop()
    else:
        loop = asyncio.new_event_loop()
    sslctx = None
    if args.tls:
        import ssl
        # TODO: take cert/key from args as well.
        here = os.path.join(os.path.dirname(__file__), '..', 'tests')
        sslctx = asyncio.SSLContext(ssl.PROTOCOL_SSLv23)
        sslctx.options |= ssl.OP_NO_SSLv2
        sslctx.load_cert_chain(certfile=os.path.join(here, 'ssl_cert.pem'),
                               keyfile=os.path.join(here, 'ssl_key.pem'))
    cache = Cache(loop)
    task = asyncio.streams.start_server(cache.handle_client,
                                        args.host,
                                        args.port,
                                        ssl=sslctx,
                                        loop=loop)
    svr = loop.run_until_complete(task)
    for sock in svr.sockets:
        logging.info('socket %s', sock.getsockname())
    try:
        loop.run_forever()
    finally:
        loop.close()
コード例 #13
0
    def test_log_slow_callbacks(self, m_logger):
        def stop_loop_cb(loop):
            loop.stop()

        @asyncio.coroutine
        def stop_loop_coro(loop):
            yield From(None)
            loop.stop()

        asyncio.set_event_loop(self.loop)
        self.loop.set_debug(True)
        self.loop.slow_callback_duration = 0.0

        # slow callback
        self.loop.call_soon(stop_loop_cb, self.loop)
        self.loop.run_forever()
        fmt = m_logger.warning.call_args[0][0]
        args = m_logger.warning.call_args[0][1:]
        self.assertRegex(fmt % tuple(args), "^Executing <Handle.*stop_loop_cb.*> " "took .* seconds$")

        # slow task
        asyncio.async(stop_loop_coro(self.loop), loop=self.loop)
        self.loop.run_forever()
        fmt = m_logger.warning.call_args[0][0]
        args = m_logger.warning.call_args[0][1:]
        self.assertRegex(fmt % tuple(args), "^Executing <Task.*stop_loop_coro.*> " "took .* seconds$")
コード例 #14
0
    def run(self, command, *args, **kwargs):
        self_ = self

        class SubprocessProtocol(asyncio.SubprocessProtocol):
            def pipe_data_received(self, fd, data):
                self_._write(fd, re.sub(r'(\r?\n)+', r'\1', data))

            def connection_lost(self, exc):
                loop.stop()  # end loop.run_forever()

        if os.name == 'nt':
            # For subprocess' pipes on Windows
            loop = asyncio.ProactorEventLoop()
            asyncio.set_event_loop(loop)
        else:
            loop = asyncio.get_event_loop()

        try:
            if kwargs.pop('shell', False):
                proc = loop.subprocess_shell(SubprocessProtocol, command)
            else:
                proc = loop.subprocess_exec(SubprocessProtocol, *command)

            def _refresh_gui():
                refresh_gui()
                loop.call_soon(_refresh_gui)

            loop.call_soon(_refresh_gui)
            transport, protocol = loop.run_until_complete(proc)
            loop.run_forever()
        except Exception, exception:
            self._write(2, str(exception))
コード例 #15
0
 def run(self, driver, time_out):
     self.loop = new_event_loop()
     set_event_loop(self.loop)
     ensure_future(self.control_loop(driver, time_out))
     self.loop.run_forever()
     self.loop.close()
     return (self.distance_to_goal, self.left_velocity, self.right_velocity)
コード例 #16
0
def handler(event, contest):
    logger.info("Start!")

    executor = ThreadPoolExecutor(max_workers=1000)
    main_loop = asyncio.new_event_loop()
    main_loop.set_default_executor(executor)
    asyncio.set_event_loop(main_loop)

    poll = Poll(main_loop)
    cal = poll.cal
    update_and_delete = UpdateAndDelete(main_loop, executor)

    table = event['table']
    queue_url = event['queueUrl']
    message_count = event['messageCount']

    poll.messages(sqs, queue_url, message_count)

    logger.info("Receive API count: {}".format(poll.fetch_count))
    logger.info("Fetched messages: {}".format(poll.message_count))

    update_and_delete.execute(sqs_client, db, queue_url, table, cal.stats)

    logger.info("Update API count: {}".format(update_and_delete.update_count))
    logger.info("Delete API count: {}".format(update_and_delete.delete_count))
    logger.info("Delete Message count: {}".format(
        update_and_delete.deleted_message_count))

    main_loop.close()
    executor.shutdown()

    return "Lambda job finished successfully."
コード例 #17
0
def handler(event, contest):
    logger.info("Start!")

    executor = ThreadPoolExecutor(max_workers=1000)
    main_loop = asyncio.new_event_loop()
    main_loop.set_default_executor(executor)
    asyncio.set_event_loop(main_loop)

    poll = Poll(main_loop)
    cal = poll.cal
    update_and_delete = UpdateAndDelete(main_loop, executor)

    table = event['table']
    queue_url = event['queueUrl']
    message_count = event['messageCount']

    poll.messages(sqs, queue_url, message_count)

    logger.info("Receive API count: {}".format(poll.fetch_count))
    logger.info("Fetched messages: {}".format(poll.message_count))

    update_and_delete.execute(sqs_client, db, queue_url, table, cal.stats)

    logger.info("Update API count: {}".format(update_and_delete.update_count))
    logger.info("Delete API count: {}".format(update_and_delete.delete_count))
    logger.info("Delete Message count: {}".format(
        update_and_delete.deleted_message_count))

    main_loop.close()
    executor.shutdown()

    return "Lambda job finished successfully."
コード例 #18
0
ファイル: vim.py プロジェクト: tracyone/pyclewn_linux
 def set_event_loop(self):
     self.loop = asyncio.new_event_loop()
     asyncio.set_event_loop(self.loop)
     self.events = asyncio.Queue(loop=self.loop)
     self.set_exception_handler()
     if self.loglevel is not None and self.loglevel <= logging.DEBUG:
         self.loop.set_debug(True)
     return self.loop
コード例 #19
0
    def test_streamreader_constructor(self):
        self.addCleanup(asyncio.set_event_loop, None)
        asyncio.set_event_loop(self.loop)

        # Tulip issue #184: Ensure that StreamReaderProtocol constructor
        # retrieves the current loop if the loop parameter is not set
        reader = asyncio.StreamReader()
        self.assertIs(reader._loop, self.loop)
コード例 #20
0
 def set_event_loop(self):
     self.loop = asyncio.new_event_loop()
     asyncio.set_event_loop(self.loop)
     self.events = asyncio.Queue(loop=self.loop)
     self.set_exception_handler()
     if self.loglevel is not None and self.loglevel <= logging.DEBUG:
         self.loop.set_debug(True)
     return self.loop
コード例 #21
0
    def test_streamreader_constructor(self):
        self.addCleanup(asyncio.set_event_loop, None)
        asyncio.set_event_loop(self.loop)

        # asyncio issue #184: Ensure that StreamReaderProtocol constructor
        # retrieves the current loop if the loop parameter is not set
        reader = asyncio.StreamReader()
        self.assertIs(reader._loop, self.loop)
コード例 #22
0
ファイル: test_futures.py プロジェクト: sshyran/trollius
 def test_tb_logger_exception_unretrieved(self, m_log):
     self.loop.set_debug(True)
     asyncio.set_event_loop(self.loop)
     fut = asyncio.Future(loop=self.loop)
     fut.set_exception(RuntimeError('boom'))
     del fut
     test_utils.run_briefly(self.loop)
     support.gc_collect()
     self.assertTrue(m_log.error.called)
コード例 #23
0
ファイル: test_streams.py プロジェクト: sshyran/trollius
    def test_streamreaderprotocol_constructor(self):
        self.addCleanup(asyncio.set_event_loop, None)
        asyncio.set_event_loop(self.loop)

        # Tulip issue #184: Ensure that StreamReaderProtocol constructor
        # retrieves the current loop if the loop parameter is not set
        reader = mock.Mock()
        protocol = asyncio.StreamReaderProtocol(reader)
        self.assertIs(protocol._loop, self.loop)
コード例 #24
0
def main():
    if os.name == 'nt':
        loop = asyncio.ProactorEventLoop()
        asyncio.set_event_loop(loop)
    else:
        loop = asyncio.get_event_loop()
    loop.run_until_complete(start(
        'sleep 2; wc', input=[b'foo bar baz\n'*300 for i in range(100)]))
    loop.close()
コード例 #25
0
 def test_tb_logger_exception_unretrieved(self, m_log):
     self.loop.set_debug(True)
     asyncio.set_event_loop(self.loop)
     fut = asyncio.Future(loop=self.loop)
     fut.set_exception(RuntimeError("boom"))
     del fut
     test_utils.run_briefly(self.loop)
     support.gc_collect()
     self.assertTrue(m_log.error.called)
コード例 #26
0
    def execute(self, sqs, queue_url, ids):
        loop = asyncio.new_event_loop()
        asyncio.set_event_loop(loop)
        loop.set_default_executor(self.executor)

        id_groups = group_by_10(ids)
        tasks = []
        for id_group in id_groups:
            tasks.append(self._one_request(loop, sqs, queue_url, id_group))
        loop.run_until_complete(asyncio.wait(tasks))
コード例 #27
0
    def execute(self, sqs, queue_url, ids):
        loop = asyncio.new_event_loop()
        asyncio.set_event_loop(loop)
        loop.set_default_executor(self.executor)

        id_groups = group_by_10(ids)
        tasks = []
        for id_group in id_groups:
            tasks.append(self._one_request(loop, sqs, queue_url, id_group))
        loop.run_until_complete(asyncio.wait(tasks))
コード例 #28
0
ファイル: DymolaBuilder.py プロジェクト: PyWilhelm/EDRIS_DS
    def add_task(self, key, task, no_cache=False):
        if not no_cache:
            task_cache = self._get_cache(key)
            if task_cache is not None:
                return TaskGetter(task_cache)
        self._tasks[key] = task
        aio.set_event_loop(self.loop)
        self.loop.call_soon_threadsafe(aio.async, self.queue.put(task))

        return TaskGetter(task)
コード例 #29
0
ファイル: DymolaBuilder.py プロジェクト: PyWilhelm/EDRIS_DS
 def __init__(self, instances=4):
     logging.warn('init dymola builder')
     DymolaBuilder._initial_paths()
     self.dymola_instances = [start_dymola() for _ in range(instances)]
     self.loop = aio.get_event_loop()
     aio.set_event_loop(self.loop)
     self.queue = aio.Queue(maxsize=0, loop=self.loop)
     arguments = (self.queue, self.loop, self.dymola_instances)
     self.main = Thread(target=main_event_loop, args=arguments)
     self.main.start()
     logging.warn('started thread loop asyncio')
コード例 #30
0
    def _basetest_open_connection_no_loop_ssl(self, open_connection_fut):
        try:
            reader, writer = self.loop.run_until_complete(open_connection_fut)
        finally:
            asyncio.set_event_loop(None)
        writer.write(b'GET / HTTP/1.0\r\n\r\n')
        f = reader.read()
        data = self.loop.run_until_complete(f)
        self.assertTrue(data.endswith(b'\r\n\r\nTest message'))

        writer.close()
コード例 #31
0
    def _basetest_open_connection_no_loop_ssl(self, open_connection_fut):
        try:
            reader, writer = self.loop.run_until_complete(open_connection_fut)
        finally:
            asyncio.set_event_loop(None)
        writer.write(b'GET / HTTP/1.0\r\n\r\n')
        f = reader.read()
        data = self.loop.run_until_complete(f)
        self.assertTrue(data.endswith(b'\r\n\r\nTest message'))

        writer.close()
コード例 #32
0
    def thread_target(self, loop):
        trollius.set_event_loop(loop)
        retry = True
        update = True
        sz = None
        sh = None
        while retry:
            try:
                [szTime, shTime] = self.sina.get_ticktime()
                if (szTime > self.szTime) & (len(self.szSymbols) > 0):
                    self.szTime = szTime
                    szUpdate = True
                else:
                    szUpdate = False

                if (shTime > self.shTime) & (len(self.shSymbols) > 0):
                    self.shTime = shTime
                    shUpdate = True
                else:
                    shUpdate = False
                if szUpdate and shUpdate:
                    [sz,
                     sh] = self.sina.get_realtime_quotes(symbols=self.symbols,
                                                         dataframe=False,
                                                         loop=loop,
                                                         split=True)
                elif szUpdate:
                    sz = self.sina.get_realtime_quotes(symbols=self.szSymbols,
                                                       dataframe=False,
                                                       loop=loop,
                                                       split=False)
                elif shUpdate:
                    sh = self.sina.get_realtime_quotes(symbols=self.shSymbols,
                                                       dataframe=False,
                                                       loop=loop,
                                                       split=False)
                retry = False
            except Exception as e:
                print(e)
        # print( time.time() - start )
        if sz:
            eventSZ = Event(event_type='SinaFreeQuote', data=sz)
            eventSZ.time = szTime
            eventSZ.localtime = time.time()
            eventSZ.exchange = 'SZ'
            for q in self._subscriber:
                q.put(eventSZ)
        if sh:
            eventSH = Event(event_type='SinaFreeQuote', data=sh)
            eventSH.time = shTime
            eventSH.localtime = time.time()
            eventSH.exchange = 'SH'
            for q in self._subscriber:
                q.put(eventSH)
コード例 #33
0
            def run_executor(executor):
                # create an event loop in the executor thread
                loop = trollius.new_event_loop()
                trollius.set_event_loop(loop)
                eventlet.spawn(run_loop, loop)

                # run the executor
                executor.start()
                executor.wait()

                # stop the event loop: run_loop() will close it
                loop.stop()
コード例 #34
0
ファイル: bms_ping.py プロジェクト: thecodemaiden/ndn-repo-3
 def start(self):
     self.isStopped = False
     self.loop = asyncio.new_event_loop()
     asyncio.set_event_loop(self.loop)
     self.face = ThreadsafeFace(self.loop, '')
     k = KeyChain()
     self.face.setCommandSigningInfo(k, k.getDefaultCertificateName())
     self.face.stopWhen(lambda:self.isStopped)
     try:
         self.loop.run_until_complete(self.sendNextInsertRequest())
     finally:
         self.face.shutdown()
コード例 #35
0
def test_run_from_running_loop():
    @asyncio.coroutine
    def foo():
        return bnra.available_devices()

    loop = bnra.new_file_event_loop()
    original_loop = asyncio.get_event_loop()

    asyncio.set_event_loop(loop)
    print(loop.run_until_complete(foo()))
    loop.stop()
    asyncio.set_event_loop(original_loop)
コード例 #36
0
            def run_executor(executor):
                # create an event loop in the executor thread
                loop = trollius.new_event_loop()
                trollius.set_event_loop(loop)
                eventlet.spawn(run_loop, loop)

                # run the executor
                executor.start()
                executor.wait()

                # stop the event loop: run_loop() will close it
                loop.stop()
コード例 #37
0
ファイル: main.py プロジェクト: stanleykylee/v-magine
def _run_async_loop(loop):
    LOG.debug("run_async_loop")

    threading.current_thread().name = "AsyncLoopThread"
    pythoncom.CoInitialize()

    trollius.set_event_loop(loop)
    try:
        loop.run_forever()
    except Exception as ex:
        LOG.exception(ex)
    finally:
        loop.close()
コード例 #38
0
ファイル: sina_data.py プロジェクト: johnsonhongyi/pyQuant
 def get_stock_data(self):
     threads = []
     for index in range(self.request_num):
         threads.append(self.get_stocks_by_range(index))
         log.debug("url:%s  len:%s" % (self.sina_stock_api, len(self.stock_list[index])))
     try:
         loop = asyncio.get_event_loop()
     except RuntimeError:
         loop = asyncio.new_event_loop()
         asyncio.set_event_loop(loop)
     loop.run_until_complete(asyncio.wait(threads))
     log.debug("get_stock_data_loop")
     return self.format_response_data()
コード例 #39
0
ファイル: capture.py プロジェクト: eaufavor/pyshark-ssl
 def setup_eventloop(self):
     """
     Sets up a new eventloop as the current one according to the OS.
     """
     if os.name == 'nt':
         self.eventloop = asyncio.ProactorEventLoop()
         if sys.version_info <= (3, 0):
             # FIXME: There appears to be a bug in the 2.7 version of trollius, wherein the selector retrieves an
             # object of value 0 and attempts to look for it in the weakref set, which raises an exception.
             # This hack sidesteps this issue, but does not solve it. If a proper fix is found, apply it!
             self.eventloop._selector._stopped_serving = set()
     else:
         self.eventloop = asyncio.new_event_loop()
     asyncio.set_event_loop(self.eventloop)
コード例 #40
0
ファイル: capture.py プロジェクト: wfr/pyshark
 def setup_eventloop(self):
     """
     Sets up a new eventloop as the current one according to the OS.
     """
     if os.name == 'nt':
         self.eventloop = asyncio.ProactorEventLoop()
         if sys.version_info <= (3, 0):
             # FIXME: There appears to be a bug in the 2.7 version of trollius, wherein the selector retrieves an
             # object of value 0 and attempts to look for it in the weakref set, which raises an exception.
             # This hack sidesteps this issue, but does not solve it. If a proper fix is found, apply it!
             self.eventloop._selector._stopped_serving = set()
     else:
         self.eventloop = asyncio.new_event_loop()
     asyncio.set_event_loop(self.eventloop)
コード例 #41
0
ファイル: wsclient.py プロジェクト: ctipath/pyalgotrade
    def run(self):
        def childEventLoopSigHandler(sig, func):
            raise NotImplementedError

        assert not self.__session
        asyncio.set_event_loop(self.__loop)

        #hack so that autobahn doesn't try to bind SIGTERM to the thread's event loop (which would generate an exception)
        self.__loop.add_signal_handler = childEventLoopSigHandler

        runner = ApplicationRunner(WEBSOCKET_HOST,
                                   WEBSOCKET_REALM,
                                   extra={'client': self})
        runner.run(WebSocketClientSession)
コード例 #42
0
    def token_renewer(self):
        while True:
            loop = trollius.new_event_loop()
            trollius.set_event_loop(loop)
            tasks = list()
            for symbol in self.websockets.keys():
                ws = self.websockets[symbol]["ws"]
                if ws.open:
                    if (datetime.now() - self.websockets[symbol]["renewed"]
                        ).total_seconds() > 180:
                        tasks.append(self.renew_token(symbol))

            if len(tasks) > 0:
                loop.run_until_complete(trollius.wait(tasks))
                loop.close()
            time.sleep(1)
コード例 #43
0
ファイル: test_base_events.py プロジェクト: sshyran/trollius
    def test_default_exc_handler_broken(self):
        contexts = []

        class Loop(base_events.BaseEventLoop):

            _selector = mock.Mock()
            _process_events = mock.Mock()

            def default_exception_handler(self, context):
                contexts.append(context)
                # Simulates custom buggy "default_exception_handler"
                raise ValueError('spam')

        loop = Loop()
        self.addCleanup(loop.close)
        asyncio.set_event_loop(loop)

        def run_loop():
            def zero_error():
                1 / 0

            loop.call_soon(zero_error)
            loop._run_once()

        with mock.patch('trollius.base_events.logger') as log:
            run_loop()
            log.error.assert_called_with(
                'Exception in default exception handler', exc_info=True)

        def custom_handler(loop, context):
            raise ValueError('ham')

        del contexts[:]
        loop.set_exception_handler(custom_handler)
        with mock.patch('trollius.base_events.logger') as log:
            run_loop()
            log.error.assert_called_with(test_utils.MockPattern(
                'Exception in default exception.*'
                'while handling.*in custom'),
                                         exc_info=True)

            # Check that original context was passed to default
            # exception handler.
            context = contexts[0]
            self.assertIn('context', context)
            self.assertIs(type(context['context']['exception']),
                          ZeroDivisionError)
コード例 #44
0
ファイル: test_timeout.py プロジェクト: sci-bots/asyncserial
def test_asyncserial_timeout_error():
    '''
    Verify serial device AsyncSerial instance is still tied up after closing.

    In Windows, it turns out that the serial port is tied up by an AsyncSerial
    instance until the corresponding event loop is closed.  This test tests
    that this is true.
    '''
    ports = serial.tools.list_ports.comports()
    if not ports:
        raise RuntimeError('No comports available.')

    kwargs = {'port': ports[0].device}

    @asyncio.coroutine
    def _open_asyncserial():
        with asyncserial.AsyncSerial(**kwargs) as async_device:
            yield asyncio.From(asyncio.sleep(5))

        raise asyncio.Return(None)

    def _open_serial(retries=1):
        for i in range(retries):
            try:
                with serial.Serial(**kwargs):
                    pass
                break
            except serial.SerialException as exception:
                pass
        else:
            raise exception

    _open_serial()

    try:
        loop = asyncio.ProactorEventLoop()
        asyncio.set_event_loop(loop)
        loop.run_until_complete(asyncio.wait_for(_open_asyncserial(),
                                                 timeout=2))
    except asyncio.TimeoutError:
        pass

    try:
        _open_serial()
    except serial.SerialException:
        raises(serial.SerialException)(_open_serial)()
コード例 #45
0
def main(loop, mode, host, port):
    asyncio.set_event_loop(loop)
    if not (mode == "server" or mode == "client"):
        raise Exception("Mode must be 'server' or 'client': " + str(mode))
    setup_logging()

    if mode == "server":
        server = start_server(loop, (host, port))
    else:
        start_client(loop, (host, port))

    try:
        loop.run_forever()
    finally:
        if mode == "server":
            server.close()
        loop.close()
コード例 #46
0
    def test_default_exc_handler_broken(self):
        contexts = []

        class Loop(base_events.BaseEventLoop):

            _selector = mock.Mock()
            _process_events = mock.Mock()

            def default_exception_handler(self, context):
                contexts.append(context)
                # Simulates custom buggy "default_exception_handler"
                raise ValueError('spam')

        loop = Loop()
        asyncio.set_event_loop(loop)

        def run_loop():
            def zero_error():
                1/0
            loop.call_soon(zero_error)
            loop._run_once()

        with mock.patch('trollius.base_events.logger') as log:
            run_loop()
            log.error.assert_called_with(
                'Exception in default exception handler',
                exc_info=True)

        def custom_handler(loop, context):
            raise ValueError('ham')

        del contexts[:]
        loop.set_exception_handler(custom_handler)
        with mock.patch('trollius.base_events.logger') as log:
            run_loop()
            log.error.assert_called_with(
                test_utils.MockPattern('Exception in default exception.*'
                                       'while handling.*in custom'),
                exc_info=True)

            # Check that original context was passed to default
            # exception handler.
            context = contexts[0]
            self.assertIn('context', context)
            self.assertIs(type(context['context']['exception']),
                          ZeroDivisionError)
コード例 #47
0
ファイル: test_timeout.py プロジェクト: sci-bots/asyncserial
def test_asyncserial_timeout_workaround():
    '''
    Test closing event loop to free up device AsyncSerial instance.
    '''
    ports = serial.tools.list_ports.comports()
    if not ports:
        raise RuntimeError('No comports available.')

    kwargs = {'port': ports[0].device}

    @asyncio.coroutine
    def _open_asyncserial():
        with asyncserial.AsyncSerial(**kwargs) as async_device:
            yield asyncio.From(asyncio.sleep(5))

        raise asyncio.Return(None)

    def _open_serial(retries=1):
        for i in range(retries):
            try:
                with serial.Serial(**kwargs):
                    pass
                break
            except serial.SerialException as exception:
                pass
        else:
            raise exception

    _open_serial()

    try:
        loop = asyncio.ProactorEventLoop()
        asyncio.set_event_loop(loop)
        loop.run_until_complete(asyncio.wait_for(_open_asyncserial(),
                                                 timeout=2))
    except asyncio.TimeoutError:
        pass
    finally:
        # Close event loop.
        loop.close()

    try:
        _open_serial()
    except serial.SerialException:
        _open_serial()
コード例 #48
0
ファイル: cacheclt.py プロジェクト: JioCloudCompute/trollius
def main():
    asyncio.set_event_loop(None)
    if args.iocp:
        from trollius.windows_events import ProactorEventLoop
        loop = ProactorEventLoop()
    else:
        loop = asyncio.new_event_loop()
    sslctx = None
    if args.tls:
        sslctx = test_utils.dummy_ssl_context()
    cache = CacheClient(args.host, args.port, sslctx=sslctx, loop=loop)
    try:
        loop.run_until_complete(
            asyncio.gather(
                *[testing(i, cache, loop) for i in range(args.ntasks)],
                loop=loop))
    finally:
        loop.close()
コード例 #49
0
    def run(self):
        try:
            asyncio.set_event_loop(asyncio.new_event_loop())

            indexPath = os.path.join(
                os.path.dirname(os.path.realpath(__file__)), 'templates')
            app = tornado.web.Application([
                (r"/stream", ImageStreamHandler, {}),
                (r"/(.*)", tornado.web.StaticFileHandler, {
                    'path': indexPath,
                    'default_filename': 'index.html'
                })
            ])
            app.listen(self.port)
            print('ImageServer::Started.')
            tornado.ioloop.IOLoop.instance().start()
        except Exception as e:
            print('ImageServer::exited run loop. Exception - ' + str(e))
コード例 #50
0
        def check_in_thread(loop, event, debug, create_loop, fut):
            # wait until the event loop is running
            event.wait()

            try:
                if create_loop:
                    loop2 = base_events.BaseEventLoop()
                    try:
                        asyncio.set_event_loop(loop2)
                        self.check_thread(loop, debug)
                    finally:
                        asyncio.set_event_loop(None)
                        loop2.close()
                else:
                    self.check_thread(loop, debug)
            except Exception as exc:
                loop.call_soon_threadsafe(fut.set_exception, exc)
            else:
                loop.call_soon_threadsafe(fut.set_result, None)
コード例 #51
0
ファイル: qqapi.py プロジェクト: johnsonhongyi/pyQuant
    def get_stock_data(self, retry_count=3, pause=0.01):
        threads = []
        for index in range(self.request_num):
            threads.append(self.get_stocks_by_range(index))
            log.debug("url len:%s" % (len(self.stock_list[index])))
        if self.request_num == 0:
            threads.append(self.get_stocks_by_range(0))
        for _ in range(retry_count):
            time.sleep(pause)
            try:
                loop = asyncio.get_event_loop()
            except RuntimeError:
                loop = asyncio.new_event_loop()
                asyncio.set_event_loop(loop)
            loop.run_until_complete(asyncio.wait(threads))
            log.debug('get_stock_data_loop')
            return self.format_response_data()

        raise IOError(ct.NETWORK_URL_ERROR_MSG)
コード例 #52
0
ファイル: test_base_events.py プロジェクト: sshyran/trollius
        def check_in_thread(loop, event, debug, create_loop, fut):
            # wait until the event loop is running
            event.wait()

            try:
                if create_loop:
                    loop2 = base_events.BaseEventLoop()
                    try:
                        asyncio.set_event_loop(loop2)
                        self.check_thread(loop, debug)
                    finally:
                        asyncio.set_event_loop(None)
                        loop2.close()
                else:
                    self.check_thread(loop, debug)
            except Exception as exc:
                loop.call_soon_threadsafe(fut.set_exception, exc)
            else:
                loop.call_soon_threadsafe(fut.set_result, None)
コード例 #53
0
ファイル: commonTips.py プロジェクト: johnsonhongyi/pyQuant
def to_asyncio_run(urllist, cmd):
    results = []

    # print "asyncio",
    @asyncio.coroutine
    def get_loop_cmd(cmd, url_s):
        loop = asyncio.get_event_loop()
        result = yield From(loop.run_in_executor(None, cmd, url_s))
        results.append(result)

    threads = []
    for url_s in urllist:
        threads.append(get_loop_cmd(cmd, url_s))
    try:
        loop = asyncio.get_event_loop()
    except RuntimeError:
        loop = asyncio.new_event_loop()
        asyncio.set_event_loop(loop)
    loop.run_until_complete(asyncio.wait(threads))
    return results
コード例 #54
0
def handler(event, contest):
    logger.info("Start!")

    executor = ThreadPoolExecutor(max_workers=1000)
    main_loop = asyncio.new_event_loop()
    main_loop.set_default_executor(executor)
    asyncio.set_event_loop(main_loop)

    poll = Poll(main_loop)

    queue_url = event['queueUrl']
    message_count = event['messageCount']

    poll.messages(sqs, queue_url, message_count)

    logger.info("Receive API count: {}".format(poll.fetch_count))
    logger.info("Fetched messages: {}".format(poll.message_count))

    main_loop.close()
    executor.shutdown()
コード例 #55
0
ファイル: crawl.py プロジェクト: JioCloudCompute/trollius
def main():
    """Main program.

    Parse arguments, set up event loop, run crawler, print report.
    """
    args = ARGS.parse_args()
    if not args.roots:
        print('Use --help for command line help')
        return

    log = Logger(args.level)

    if args.iocp:
        from trollius.windows_events import ProactorEventLoop
        loop = ProactorEventLoop()
        asyncio.set_event_loop(loop)
    elif args.select:
        loop = asyncio.SelectorEventLoop()
        asyncio.set_event_loop(loop)
    else:
        loop = asyncio.get_event_loop()

    roots = {fix_url(root) for root in args.roots}

    crawler = Crawler(log,
                      roots, exclude=args.exclude,
                      strict=args.strict,
                      max_redirect=args.max_redirect,
                      max_tries=args.max_tries,
                      max_tasks=args.max_tasks,
                      max_pool=args.max_pool,
                      )
    try:
        loop.run_until_complete(crawler.crawl())  # Crawler gonna crawl.
    except KeyboardInterrupt:
        sys.stderr.flush()
        print('\nInterrupted\n')
    finally:
        crawler.report()
        crawler.close()
        loop.close()
コード例 #56
0
    def test_assert_is_current_event_loop(self):
        def cb():
            pass

        other_loop = base_events.BaseEventLoop()
        other_loop._selector = mock.Mock()
        asyncio.set_event_loop(other_loop)

        # raise RuntimeError if the event loop is different in debug mode
        self.loop.set_debug(True)
        with self.assertRaises(RuntimeError):
            self.loop.call_soon(cb)
        with self.assertRaises(RuntimeError):
            self.loop.call_later(60, cb)
        with self.assertRaises(RuntimeError):
            self.loop.call_at(self.loop.time() + 60, cb)

        # check disabled if debug mode is disabled
        self.loop.set_debug(False)
        self.loop.call_soon(cb)
        self.loop.call_later(60, cb)
        self.loop.call_at(self.loop.time() + 60, cb)
コード例 #57
0
ファイル: win_fun.py プロジェクト: sstjohn/thundergate
def platform_setup(driver):
    driver.loop = asyncio.ProactorEventLoop()
    asyncio.set_event_loop(driver.loop)
    driver.kbd_h = GetStdHandle(STD_INPUT_HANDLE)
コード例 #58
0
ファイル: DymolaBuilder.py プロジェクト: PyWilhelm/EDRIS_DS
def main_event_loop(queue, loop, dymola_instances):
    aio.set_event_loop(loop)
    for d_instance in dymola_instances:
        aio.async(dymola_builder(queue, d_instance))
    loop.run_forever()
コード例 #59
0
 def run_loop(loop):
     loop.run_forever()
     loop.close()
     trollius.set_event_loop(None)