async-worker / aiologger

Asynchronous logging for Python and asyncio
https://async-worker.github.io/aiologger/
MIT License
136 stars 13 forks source link

[WinError 6] The handle is invalid #10

Closed bugale closed 2 years ago

bugale commented 2 years ago

Hi, I tried running your sample code:

import asyncio
from aiologger import Logger

async def main():
    logger = Logger.with_default_handlers(name='my-logger')

    logger.debug("debug")
    logger.info("info")

    logger.warning("warning")
    logger.error("error")
    logger.critical("critical")

    await logger.shutdown()

loop = asyncio.get_event_loop()
loop.run_until_complete(main())
loop.run_forever()

But I get the following output:

Task exception was never retrieved
future: <Task finished name='Task-2' coro=<Logger.handle() done, defined at C:\Program Files\Python39\lib\site-packages\aiologger\logger.py:169> exception=OSError(9, 'The handle is invalid', None, 6, None)>
Traceback (most recent call last):
  File "C:\Program Files\Python39\lib\site-packages\aiologger\logger.py", line 177, in handle
    await self.call_handlers(record)
  File "C:\Program Files\Python39\lib\site-packages\aiologger\logger.py", line 147, in call_handlers
    await handler.handle(record)
  File "C:\Program Files\Python39\lib\site-packages\aiologger\handlers\streams.py", line 66, in handle
    await self.emit(record)
  File "C:\Program Files\Python39\lib\site-packages\aiologger\handlers\streams.py", line 77, in emit
    self.writer = await self._init_writer()
  File "C:\Program Files\Python39\lib\site-packages\aiologger\handlers\streams.py", line 50, in _init_writer
    transport, protocol = await loop.connect_write_pipe(
  File "C:\Program Files\Python39\lib\asyncio\base_events.py", line 1572, in connect_write_pipe
    transport = self._make_write_pipe_transport(pipe, protocol, waiter)
  File "C:\Program Files\Python39\lib\asyncio\proactor_events.py", line 669, in _make_write_pipe_transport
    return _ProactorWritePipeTransport(self,
  File "C:\Program Files\Python39\lib\asyncio\proactor_events.py", line 434, in __init__
    self._read_fut = self._loop._proactor.recv(self._sock, 16)
  File "C:\Program Files\Python39\lib\asyncio\windows_events.py", line 445, in recv
    self._register_with_iocp(conn)
  File "C:\Program Files\Python39\lib\asyncio\windows_events.py", line 718, in _register_with_iocp
    _overlapped.CreateIoCompletionPort(obj.fileno(), self._iocp, 0, 0)
OSError: [WinError 6] The handle is invalid
Task exception was never retrieved
future: <Task finished name='Task-3' coro=<Logger.handle() done, defined at C:\Program Files\Python39\lib\site-packages\aiologger\logger.py:169> exception=OSError(9, 'The handle is invalid', None, 6, None)>
Traceback (most recent call last):
  File "C:\Program Files\Python39\lib\site-packages\aiologger\logger.py", line 177, in handle
    await self.call_handlers(record)
  File "C:\Program Files\Python39\lib\site-packages\aiologger\logger.py", line 147, in call_handlers
    await handler.handle(record)
  File "C:\Program Files\Python39\lib\site-packages\aiologger\handlers\streams.py", line 66, in handle
    await self.emit(record)
  File "C:\Program Files\Python39\lib\site-packages\aiologger\handlers\streams.py", line 77, in emit
    self.writer = await self._init_writer()
  File "C:\Program Files\Python39\lib\site-packages\aiologger\handlers\streams.py", line 50, in _init_writer
    transport, protocol = await loop.connect_write_pipe(
  File "C:\Program Files\Python39\lib\asyncio\base_events.py", line 1572, in connect_write_pipe
    transport = self._make_write_pipe_transport(pipe, protocol, waiter)
  File "C:\Program Files\Python39\lib\asyncio\proactor_events.py", line 669, in _make_write_pipe_transport
    return _ProactorWritePipeTransport(self,
  File "C:\Program Files\Python39\lib\asyncio\proactor_events.py", line 434, in __init__
    self._read_fut = self._loop._proactor.recv(self._sock, 16)
  File "C:\Program Files\Python39\lib\asyncio\windows_events.py", line 451, in recv
    ov.ReadFile(conn.fileno(), nbytes)
OSError: [WinError 6] The handle is invalid
Task exception was never retrieved
future: <Task finished name='Task-4' coro=<Logger.handle() done, defined at C:\Program Files\Python39\lib\site-packages\aiologger\logger.py:169> exception=OSError(9, 'The handle is invalid', None, 6, None)>
Traceback (most recent call last):
  File "C:\Program Files\Python39\lib\site-packages\aiologger\logger.py", line 177, in handle
    await self.call_handlers(record)
  File "C:\Program Files\Python39\lib\site-packages\aiologger\logger.py", line 147, in call_handlers
    await handler.handle(record)
  File "C:\Program Files\Python39\lib\site-packages\aiologger\handlers\streams.py", line 66, in handle
    await self.emit(record)
  File "C:\Program Files\Python39\lib\site-packages\aiologger\handlers\streams.py", line 77, in emit
    self.writer = await self._init_writer()
  File "C:\Program Files\Python39\lib\site-packages\aiologger\handlers\streams.py", line 50, in _init_writer
    transport, protocol = await loop.connect_write_pipe(
  File "C:\Program Files\Python39\lib\asyncio\base_events.py", line 1572, in connect_write_pipe
    transport = self._make_write_pipe_transport(pipe, protocol, waiter)
  File "C:\Program Files\Python39\lib\asyncio\proactor_events.py", line 669, in _make_write_pipe_transport
    return _ProactorWritePipeTransport(self,
  File "C:\Program Files\Python39\lib\asyncio\proactor_events.py", line 434, in __init__
    self._read_fut = self._loop._proactor.recv(self._sock, 16)
  File "C:\Program Files\Python39\lib\asyncio\windows_events.py", line 445, in recv
    self._register_with_iocp(conn)
  File "C:\Program Files\Python39\lib\asyncio\windows_events.py", line 718, in _register_with_iocp
    _overlapped.CreateIoCompletionPort(obj.fileno(), self._iocp, 0, 0)
OSError: [WinError 6] The handle is invalid
Task exception was never retrieved
future: <Task finished name='Task-5' coro=<Logger.handle() done, defined at C:\Program Files\Python39\lib\site-packages\aiologger\logger.py:169> exception=OSError(9, 'The handle is invalid', None, 6, None)>
Traceback (most recent call last):
  File "C:\Program Files\Python39\lib\site-packages\aiologger\logger.py", line 177, in handle
    await self.call_handlers(record)
  File "C:\Program Files\Python39\lib\site-packages\aiologger\logger.py", line 147, in call_handlers
    await handler.handle(record)
  File "C:\Program Files\Python39\lib\site-packages\aiologger\handlers\streams.py", line 66, in handle
    await self.emit(record)
  File "C:\Program Files\Python39\lib\site-packages\aiologger\handlers\streams.py", line 77, in emit
    self.writer = await self._init_writer()
  File "C:\Program Files\Python39\lib\site-packages\aiologger\handlers\streams.py", line 50, in _init_writer
    transport, protocol = await loop.connect_write_pipe(
  File "C:\Program Files\Python39\lib\asyncio\base_events.py", line 1572, in connect_write_pipe
    transport = self._make_write_pipe_transport(pipe, protocol, waiter)
  File "C:\Program Files\Python39\lib\asyncio\proactor_events.py", line 669, in _make_write_pipe_transport
    return _ProactorWritePipeTransport(self,
  File "C:\Program Files\Python39\lib\asyncio\proactor_events.py", line 434, in __init__
    self._read_fut = self._loop._proactor.recv(self._sock, 16)
  File "C:\Program Files\Python39\lib\asyncio\windows_events.py", line 451, in recv
    ov.ReadFile(conn.fileno(), nbytes)
OSError: [WinError 6] The handle is invalid
Task exception was never retrieved
future: <Task finished name='Task-6' coro=<Logger.handle() done, defined at C:\Program Files\Python39\lib\site-packages\aiologger\logger.py:169> exception=OSError(9, 'The handle is invalid', None, 6, None)>
Traceback (most recent call last):
  File "C:\Program Files\Python39\lib\site-packages\aiologger\logger.py", line 177, in handle
    await self.call_handlers(record)
  File "C:\Program Files\Python39\lib\site-packages\aiologger\logger.py", line 147, in call_handlers
    await handler.handle(record)
  File "C:\Program Files\Python39\lib\site-packages\aiologger\handlers\streams.py", line 66, in handle
    await self.emit(record)
  File "C:\Program Files\Python39\lib\site-packages\aiologger\handlers\streams.py", line 77, in emit
    self.writer = await self._init_writer()
  File "C:\Program Files\Python39\lib\site-packages\aiologger\handlers\streams.py", line 50, in _init_writer
    transport, protocol = await loop.connect_write_pipe(
  File "C:\Program Files\Python39\lib\asyncio\base_events.py", line 1572, in connect_write_pipe
    transport = self._make_write_pipe_transport(pipe, protocol, waiter)
  File "C:\Program Files\Python39\lib\asyncio\proactor_events.py", line 669, in _make_write_pipe_transport
    return _ProactorWritePipeTransport(self,
  File "C:\Program Files\Python39\lib\asyncio\proactor_events.py", line 434, in __init__
    self._read_fut = self._loop._proactor.recv(self._sock, 16)
  File "C:\Program Files\Python39\lib\asyncio\windows_events.py", line 451, in recv
    ov.ReadFile(conn.fileno(), nbytes)
OSError: [WinError 6] The handle is invalid

I was running it on Python 3.9.5 / Windows 11

diogommartins commented 2 years ago

At the moment, aiologger isn't compatible with the windows platform, as described at the project classifiers: https://github.com/async-worker/aiologger/blob/main/setup.cfg#L25