It looks like you didn't close explicitly your loop. See the doc: https://docs.python.org/dev/library/asyncio-dev.html#close-transports-and-event-loops
Victor 2015-10-23 15:17 GMT+02:00 Leslie Klein <[email protected]>: > I run the loop like this: > loop.run_until_complete(asyncio.wait(tasks)) > > tasks is a list: 1 task connects to each peer and 1 task runs the protocol > to download data. Eventually all the connect tasks end. When the remote host > shuts down, the download task ends. > If I don't add more tasks connect tasks to the loop (with a new set of > peers), maybe this is what asyncio does. > > On Thursday, October 22, 2015 at 11:34:01 PM UTC-4, Leslie Klein wrote: >> >> I am building a bittorrent client using the python 3.4 asyncio library. I >> get up to a certain point in the protocol (receive Unchoke message from a >> remote peer) and then the remote peer closes the connection. Here is the >> output to the console. >> https://docs.python.org/2/reference/datamodel.html#object.__del__ explains >> some nuances with __del__. I assume I need to do something in my code, but I >> need a hint. Everytime my client receives the Unchoke message, this error >> occurs. >> >> Windows PowerShell >> Copyright (C) 2009 Microsoft Corporation. All rights reserved. >> >> >> c:\Anaconda3\python .\message_types.py >> >> received Handshake from peer 78.187.198.160 >> 78.187.198.160: successfully read Handshake >> received Handshake from peer 186.106.94.63 >> 186.106.94.63: successfully read Handshake >> 78.187.198.160: successfully read Not Supported >> 186.106.94.63: successfully read Not Supported >> received Bitfield from peer 78.187.198.160 >> 78.187.198.160: successfully read Bitfield >> received Bitfield from peer 186.106.94.63 >> 186.106.94.63: successfully read Bitfield >> 186.106.94.63: wrote INTERESTED >> 186.106.94.63: client ready to receive Unchoke >> received Have from peer 186.106.94.63 >> received Unchoke from peer 186.106.94.63 >> [WinError 10054] An existing connection was forcibly closed by the remote >> host >> >> Exception ignored in: <bound method _WindowsSelectorEventLoop.__del__ of >> <_WindowsSelectorEventLoop running=False closed >> =False debug=True>> >> Traceback (most recent call last): >> File "c:\Anaconda3\lib\asyncio\base_events.py", line 361, in __del__ >> File "c:\Anaconda3\lib\asyncio\selector_events.py", line 98, in close >> File "c:\Anaconda3\lib\asyncio\base_events.py", line 340, in close >> File "c:\Anaconda3\lib\logging\__init__.py", line 1262, in debug >> File "c:\Anaconda3\lib\logging\__init__.py", line 1409, in _log >> File "c:\Anaconda3\lib\logging\__init__.py", line 1419, in handle >> File "c:\Anaconda3\lib\logging\__init__.py", line 1481, in callHandlers >> File "c:\Anaconda3\lib\logging\__init__.py", line 853, in handle >> File "c:\Anaconda3\lib\logging\__init__.py", line 1040, in emit >> File "c:\Anaconda3\lib\logging\__init__.py", line 1030, in _open >> NameError: name 'open' is not defined >> Exception ignored in: <bound method Task.__del__ of <Task finished >> coro=<downloader() done, defined at .\message_types.p >> y:934> exception=KeyError(None,) created at >> c:\Anaconda3\lib\asyncio\tasks.py:330>> >> Traceback (most recent call last): >> File "c:\Anaconda3\lib\asyncio\tasks.py", line 94, in __del__ >> File "c:\Anaconda3\lib\asyncio\futures.py", line 216, in __del__ >> File "c:\Anaconda3\lib\asyncio\base_events.py", line 1037, in >> call_exception_handler >> File "c:\Anaconda3\lib\logging\__init__.py", line 1303, in error >> File "c:\Anaconda3\lib\logging\__init__.py", line 1409, in _log >> File "c:\Anaconda3\lib\logging\__init__.py", line 1419, in handle >> File "c:\Anaconda3\lib\logging\__init__.py", line 1481, in callHandlers >> File "c:\Anaconda3\lib\logging\__init__.py", line 853, in handle >> File "c:\Anaconda3\lib\logging\__init__.py", line 1040, in emit >> File "c:\Anaconda3\lib\logging\__init__.py", line 1030, in _open >> NameError: name 'open' is not defined >> >
