summaryrefslogtreecommitdiffstats
path: root/Lib/asyncio/proactor_events.py
Commit message (Collapse)AuthorAgeFilesLines
...
* Close #22063: socket operations (socket,recv, sock_sendall, sock_connect,Victor Stinner2014-07-291-0/+8
| | | | | sock_accept) now raise an exception in debug mode if sockets are in blocking mode.
* asyncio: sync with TulipVictor Stinner2014-07-251-6/+2
| | | | | | | | | | | | * Fix _WaitHandleFuture.cancel(): return the result of the parent cancel() method. * _OverlappedFuture.cancel() now clears its reference to the overlapped object. Make also the _OverlappedFuture.ov attribute private. * Check if _WaitHandleFuture completed before unregistering it in the callback. Add also _WaitHandleFuture._poll() and repr(_WaitHandleFuture). * _WaitHandleFuture now unregisters its wait handler if WaitForSingleObject() raises an exception. * _OverlappedFuture.set_exception() now cancels the overlapped operation.
* Python issue #21645, Tulip issue 192: Rewrite signal handlingVictor Stinner2014-07-171-1/+1
| | | | | | | | | | | | | | | | | | | Since Python 3.3, the C signal handler writes the signal number into the wakeup file descriptor and then schedules the Python call using Py_AddPendingCall(). asyncio uses the wakeup file descriptor to wake up the event loop, and relies on Py_AddPendingCall() to schedule the final callback with call_soon(). If the C signal handler is called in a thread different than the thread of the event loop, the loop is awaken but Py_AddPendingCall() was not called yet. In this case, the event loop has nothing to do and go to sleep again. Py_AddPendingCall() is called while the event loop is sleeping again and so the final callback is not scheduled immediatly. This patch changes how asyncio handles signals. Instead of relying on Py_AddPendingCall() and the wakeup file descriptor, asyncio now only relies on the wakeup file descriptor. asyncio reads signal numbers from the wakeup file descriptor to call its signal handler.
* asyncio: sync with TulipVictor Stinner2014-07-121-3/+33
| | | | | | | | | | | | | | | | | | | * Tulip issue #183: log socket events in debug mode - Log most important socket events: socket connected, new client, connection reset or closed by peer (EOF), etc. - Log time elapsed in DNS resolution (getaddrinfo) - Log pause/resume reading - Log time of SSL handshake - Log SSL handshake errors - Add a __repr__() method to many classes * Fix ProactorEventLoop() in debug mode. ProactorEventLoop._make_self_pipe() doesn't call call_soon() directly because it checks for the current loop which fails, because the method is called to build the event loop. * Cleanup _ProactorReadPipeTransport constructor. Not need to set again _read_fut attribute to None, it is already done in the base class.
* asyncio, Tulip issue 180: Make Server attributes and methods privateVictor Stinner2014-07-111-2/+2
| | | | | | | - loop, waiters and active_count attributes are now private - attach(), detach() and wakeup() methods are now private The sockets attribute remains public.
* asyncion, Tulip issue 181: BaseEventLoop.create_datagram_endpoint() now waitsVictor Stinner2014-07-081-0/+1
| | | | | until protocol.connection_made() has been called. Document also why transport constructors use a waiter.
* asyncio: sync with TulipVictor Stinner2014-07-071-1/+1
| | | | | Backout the "Tulip issue 181: Faster create_connection()" changeset, it was a mistake.
* asyncio: sync with TulipVictor Stinner2014-07-071-1/+1
| | | | | | | | - Tulip issue #181: Faster create_connection(). Call directly waiter.set_result() in the constructor of _ProactorBasePipeTransport and _SelectorSocketTransport, instead of using of delaying the call with call_soon(). - Cleanup iscoroutine()
* Closes #21886, #21447: Fix a race condition in asyncio when setting the resultVictor Stinner2014-07-051-1/+1
| | | | | of a Future with call_soon(). Add an helper, a private method, to set the result only if the future was not cancelled.
* asyncio, Tulip issue 171: BaseEventLoop.close() now raises an exception if theVictor Stinner2014-06-221-1/+1
| | | | | event loop is running. You must first stop the event loop and then wait until it stopped, before closing it.
* Issue #21326: Add a new is_closed() method to asyncio.BaseEventLoopVictor Stinner2014-06-101-8/+15
| | | | | | | | | | | Add BaseEventLoop._closed attribute and use it to check if the event loop was closed or not, instead of checking different attributes in each subclass of BaseEventLoop. run_forever() and run_until_complete() methods now raise a RuntimeError('Event loop is closed') exception if the event loop was closed. BaseProactorEventLoop.close() now also cancels "accept futures".
* asyncio: Fix _ProactorWritePipeTransport._pipe_closed()Victor Stinner2014-02-201-1/+1
| | | | The "exc" variable was not defined, pass a BrokenPipeError exception instead.
* asyncio, Tulip issue 139: Improve error messages on "fatal errors"Victor Stinner2014-02-191-5/+5
| | | | | Mention if the error was caused by a read or a write, and be more specific on the object (ex: "pipe transport" instead of "transport").
* asyncio.transports: Make _ProactorBasePipeTransport use _FlowControlMixinYury Selivanov2014-02-181-53/+2
|
* asyncio: New error handling API. Issue #20681.Yury Selivanov2014-02-181-7/+26
|
* ayncio, Tulip issue 129: BaseEventLoop.sock_connect() now raises an error ifVictor Stinner2014-02-131-1/+8
| | | | | the address is not resolved (hostname instead of an IP address) for AF_INET and AF_INET6 address families.
* Issue #20505: Remove resolution and _granularity from selectors and asyncioVictor Stinner2014-02-071-1/+0
| | | | | * Remove selectors.BaseSelector.resolution attribute * Remove asyncio.BaseEventLoop._granularity attribute
* asyncio: Fix _ProactorWritePipeTransport._pipe_closed()Victor Stinner2014-02-041-1/+4
| | | | | Do nothing if the pipe is already closed. _loop_writing() may call _force_close() when it gets ConnectionResetError.
* Issue #20400: Merge Tulip into Python: add the new asyncio.subprocess moduleVictor Stinner2014-02-011-13/+21
| | | | | | | | | | | | | | | | | | | | * Add a new asyncio.subprocess module * Add new create_subprocess_exec() and create_subprocess_shell() functions * The new asyncio.subprocess.SubprocessStreamProtocol creates stream readers for stdout and stderr and a stream writer for stdin. * The new asyncio.subprocess.Process class offers an API close to the subprocess.Popen class: - pid, returncode, stdin, stdout and stderr attributes - communicate(), wait(), send_signal(), terminate() and kill() methods * Remove STDIN (0), STDOUT (1) and STDERR (2) constants from base_subprocess and unix_events, to not be confused with the symbols with the same name of subprocess and asyncio.subprocess modules * _ProactorBasePipeTransport.get_write_buffer_size() now counts also the size of the pending write * _ProactorBaseWritePipeTransport._loop_writing() may now pause the protocol if the write buffer size is greater than the high water mark (64 KB by default)
* Issue #20455: Add a resolution attribute to IocpProactor (1 ms)Victor Stinner2014-01-311-0/+1
|
* Issue #20455: asyncio: write a new write pipe transport class for proactor (onVictor Stinner2014-01-311-12/+26
| | | | | | | Windows) instead of using the "duplex" pipe transport. The new class uses a simpler overlapped read to be notified when the pipe is closed. So the protocol doesn't need to implement eof_received(): connection_lost() is called instead. _UnixWritePipeTransport has the same approach.
* asyncio: _fatal_error() of _UnixWritePipeTransport and ↵Victor Stinner2014-01-291-1/+2
| | | | | | _ProactorBasePipeTransport shouldn't log BrokenPipeError nor ConnectionResetError. (Same behaviour as _SelectorTransport._fatal_error().)
* Update asyncio from the Tulip projectVictor Stinner2014-01-251-0/+2
| | | | | | | | | | | | | | | | Major changes: - StreamReader.readexactly() now raises an IncompleteReadError if the end of stream is reached before we received enough bytes, instead of returning less bytes than requested. - Unit tests use the main asyncio module instead of submodules like events - _UnixWritePipeTransport now also supports character devices, as _UnixReadPipeTransport. Patch written by Jonathan Slenders. - Export more symbols: BaseEventLoop, BaseProactorEventLoop, BaseSelectorEventLoop, Queue and Queue sublasses, Empty, Full
* Cleanup properly proactor event loopVictor Stinner2014-01-101-0/+10
| | | | | | | | | * store the "self reading" future when the "self pipe" is closed (when the event loop is closed) * store "accept" futures to cancel them when we stop serving * close the "accept socket" if the "accept future" is cancelled Fix many warnings which can be seen when unit tests are run in verbose mode.
* asyncio: Write flow control for proactor event loop.Guido van Rossum2013-12-041-17/+99
|
* asyncio: Add support for running subprocesses on Windows with the IOCP event ↵Guido van Rossum2013-10-301-2/+9
| | | | loop (Richard Oudkerk).
* Issue #19299: fix refleak test failures in test_asyncioAntoine Pitrou2013-10-191-0/+1
|
* Rename Transport.pause/resume to pause_reading/pause_writing. Also relax ↵Guido van Rossum2013-10-181-3/+3
| | | | timeout in test_call_later().
* Rename the logger to plain "logger".Guido van Rossum2013-10-171-5/+5
|
* Initial checkin of asyncio package (== Tulip, == PEP 3156).Guido van Rossum2013-10-171-0/+352