[New-bugs-announce] [issue36981] asyncio transport.write() memory out
viocal
report at bugs.python.org
Mon May 20 22:23:49 EDT 2019
New submission from viocal <viocal at tom.com>:
in asyncio
when filedata than free memory(hardware)
will be memory out Or killed by OS
for buf in filedata:
transport.write(buf)
#to client
I try it todo:
abort transporting to protect application be killed by OS
modified selector_events.py
def _write_ready(self):
assert self._buffer, 'Data should not be empty'
if self._conn_lost:
return
try:
n = self._sock.send(self._buffer)
except (BlockingIOError, InterruptedError):
pass
except Exception as exc:
self._loop._remove_writer(self._sock_fd)
self._buffer.clear()
self._fatal_error(exc, 'Fatal write error on socket transport')
if self._empty_waiter is not None:
self._empty_waiter.set_exception(exc)
return
else:
try:
if n:
del self._buffer[:n]
self._maybe_resume_protocol() # May append to buffer.
if not self._buffer:
self._loop._remove_writer(self._sock_fd)
if self._empty_waiter is not None:
self._empty_waiter.set_result(None)
if self._closing:
self._call_connection_lost(None)
elif self._eof:
self._sock.shutdown(socket.SHUT_WR)
except Exception as exc: #(MemoryError)
self._buffer.clear()
self._loop._remove_writer(self._sock_fd)
self._fatal_error(exc, 'Fatal write error on Selector SocketTransport write ready')
if self._empty_waiter is not None:
self._empty_waiter.set_exception(exc)
return
----------
components: asyncio
messages: 342973
nosy: asvetlov, viocal, yselivanov
priority: normal
severity: normal
status: open
title: asyncio transport.write() memory out
type: resource usage
versions: Python 3.7
_______________________________________
Python tracker <report at bugs.python.org>
<https://bugs.python.org/issue36981>
_______________________________________
More information about the New-bugs-announce
mailing list