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
>
>

Reply via email to