By blocking, I meant "not progressing anymore". Not that is blocks the thread.
Should we catch CancelledError here at this line? https://code.google.com/p/tulip/source/browse/asyncio/base_events.py#410 Le jeudi 3 avril 2014 12:10:56 UTC+2, Victor Stinner a écrit : > > Hi, > > 2014-04-03 11:34 GMT+02:00 Jonathan Slenders > <[email protected]<javascript:>>: > > > First he proposed to wrap create_connection into wait_for with a > timeout=1 > > parameter, but that would leave the file descriptor open that was > created in > > BaseEventLoop.create_connection(). Therefore he proposes to create the > > socket ourself, using sock_connect , and if that fails due to a timeout, > > call sock.close manually. > > When you use wait_for(), the coroutine gets a CancelledError and so > can cleanup its data (close the socket). > > If create_connection() doesn't close the socket on error, it's a bug. > Please open an issue. > > > How is it possible that loop.create_connection blocks? > > The slowest part is probably the DNS resolution. By default, > getaddrinfo() is called in a thread. > > > Doesn't it just fail after a while if the host is not reachable? > > Network operations can be slow, but create_connection() should not > "block", the coroutine should be running in background, as any "async" > task. > > It would help to identify exactly which Python line hangs. > > Victor >
