New submission from Erwin Mayer: I am using the following function to force a coroutine to run synchronously:
def await_sync(coro: types.CoroutineType, timeout_s: int=None): """ :param coro: a coroutine or lambda loop: coroutine(loop) :param timeout_s: :return: """ loop = asyncio.new_event_loop() # type: BaseEventLoop if not is_awaitable(coro): coro = coro(loop) if timeout_s is None: fut = asyncio.ensure_future(coro, loop=loop) else: fut = asyncio.ensure_future(asyncio.wait_for(coro, timeout=timeout_s, loop=loop), loop=loop) loop.run_until_complete(fut) return fut.result() def is_awaitable(coro_or_future): if isinstance(coro_or_future, futures.Future): return coro_or_future elif asyncio.coroutines.iscoroutine(coro_or_future): return True elif asyncio.compat.PY35 and inspect.isawaitable(coro_or_future): return True else: return False However, intermittently, it will freeze upon simply trying to create a new loop: loop = asyncio.new_event_loop(). Inspecting the stack traces shows me the exact location where it hangs: File: "/src\system\utils.py", line 34, in await_sync loop = asyncio.new_event_loop() # type: BaseEventLoop File: "\lib\asyncio\events.py", line 636, in new_event_loop return get_event_loop_policy().new_event_loop() File: "\lib\asyncio\events.py", line 587, in new_event_loop return self._loop_factory() File: "\lib\asyncio\selector_events.py", line 55, in __init__ self._make_self_pipe() File: "\lib\asyncio\selector_events.py", line 116, in _make_self_pipe self._ssock, self._csock = self._socketpair() File: "\lib\asyncio\windows_events.py", line 295, in _socketpair return windows_utils.socketpair() File: "\lib\socket.py", line 515, in socketpair ssock, _ = lsock.accept() File: "\lib\socket.py", line 195, in accept fd, addr = self._accept() I am using Python 3.5.1. StackOverflow question: http://stackoverflow.com/questions/35861175/what-can-cause-asyncio-to-hang-upon-simply-creating-a-new-loop ---------- components: asyncio messages: 261440 nosy: Erwin Mayer, gvanrossum, haypo, yselivanov priority: normal severity: normal status: open title: asyncio.new_event_loop() hangs type: crash versions: Python 3.5 _______________________________________ Python tracker <rep...@bugs.python.org> <http://bugs.python.org/issue26520> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com