本文整理汇总了Python中errno.EWOULDBLOCK属性的典型用法代码示例。如果您正苦于以下问题:Python errno.EWOULDBLOCK属性的具体用法?Python errno.EWOULDBLOCK怎么用?Python errno.EWOULDBLOCK使用的例子?那么, 这里精选的属性代码示例或许可以为您提供帮助。您也可以进一步了解该属性所在类errno
的用法示例。
在下文中一共展示了errno.EWOULDBLOCK属性的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: _receive_device
# 需要导入模块: import errno [as 别名]
# 或者: from errno import EWOULDBLOCK [as 别名]
def _receive_device(self):
"""Receive a single device from the monitor.
Return the received :class:`Device`, or ``None`` if no device could be
received.
"""
while True:
try:
device_p = self._libudev.udev_monitor_receive_device(self)
return Device(self.context, device_p) if device_p else None
except EnvironmentError as error:
if error.errno in (errno.EAGAIN, errno.EWOULDBLOCK):
# No data available
return None
elif error.errno == errno.EINTR:
# Try again if our system call was interrupted
continue
else:
raise
示例2: _send_buffer
# 需要导入模块: import errno [as 别名]
# 或者: from errno import EWOULDBLOCK [as 别名]
def _send_buffer(self, buff, target, send_all=False):
size = len(buff)
tosend = size
already_sent = 0
while tosend > 0:
try:
# i should be able to send a bytearray
sent = target.send(buff[already_sent:])
if sent == 0:
raise RuntimeError('socket connection broken')
already_sent += sent
tosend -= sent
except socket.error as e:
# if full buffers then wait for them to drain and try again
if e.errno in [errno.EAGAIN, errno.EWOULDBLOCK]:
if send_all:
continue
return buff[already_sent:]
else:
raise exception.SocketException(str(e))
return None
示例3: ready_to_read
# 需要导入模块: import errno [as 别名]
# 或者: from errno import EWOULDBLOCK [as 别名]
def ready_to_read(self):
while True:
ancillary_size = socket.CMSG_LEN(self.MAX_SIZE)
try:
message, ancillary_messages, _msg_flags, from_info = \
self.sock.recvmsg(self.MAX_SIZE, ancillary_size)
except (IOError, OSError) as err:
if err.args[0] != errno.EWOULDBLOCK:
self.warning("Socket receive failed: %s", err)
return
if not MACOS:
rx_interface_index = None
for anc in ancillary_messages:
# pylint:disable=no-member
if anc[0] == socket.SOL_IP and anc[1] == socket.IP_PKTINFO:
packet_info = in_pktinfo.from_buffer_copy(anc[2])
rx_interface_index = packet_info.ipi_ifindex
elif anc[0] == socket.SOL_IPV6 and anc[1] == socket.IPV6_PKTINFO:
packet_info = in6_pktinfo.from_buffer_copy(anc[2])
rx_interface_index = packet_info.ipi6_ifindex
if rx_interface_index and (rx_interface_index != self._interface_index):
# Message received on "wrong" interface; ignore
return
self._receive_function(message, from_info, self.sock)
示例4: _sendBuffer
# 需要导入模块: import errno [as 别名]
# 或者: from errno import EWOULDBLOCK [as 别名]
def _sendBuffer(self, buff):
size = len(buff)
tosend = size
already_sent = 0
while tosend > 0:
try:
# i should be able to send a bytearray
sent = self.client.send(buff[already_sent:])
if sent == 0:
raise RuntimeError('socket connection broken')
already_sent += sent
tosend -= sent
except socket.error as e:
# if we have full buffers then wait for them to drain and try
# again
if e.errno in [errno.EAGAIN, errno.EWOULDBLOCK]:
return buff[already_sent:]
else:
raise e
return None
示例5: run_for_multiple
# 需要导入模块: import errno [as 别名]
# 或者: from errno import EWOULDBLOCK [as 别名]
def run_for_multiple(self, timeout):
while self.alive:
self.notify()
try:
ready = self.wait(timeout)
except StopWaiting:
return
if ready is not None:
for listener in ready:
if listener == self.PIPE[0]:
continue
try:
self.accept(listener)
except EnvironmentError as e:
if e.errno not in (errno.EAGAIN, errno.ECONNABORTED,
errno.EWOULDBLOCK):
raise
if not self.is_parent_alive():
return
示例6: _receive
# 需要导入模块: import errno [as 别名]
# 或者: from errno import EWOULDBLOCK [as 别名]
def _receive(self):
"""Receive any incoming socket data.
If an error is thrown, handle it and return an empty string.
:return: data_in
:rtype: bytes
"""
data_in = EMPTY_BUFFER
try:
if not self.socket:
raise socket.error('connection/socket error')
data_in = self._read_from_socket()
except socket.timeout:
pass
except (IOError, OSError) as why:
if why.args[0] not in (EWOULDBLOCK, EAGAIN):
self._exceptions.append(AMQPConnectionError(why))
self._running.clear()
return data_in
示例7: read
# 需要导入模块: import errno [as 别名]
# 或者: from errno import EWOULDBLOCK [as 别名]
def read(self, size):
while len(self.buffer) < size:
self.ensure_connection()
try:
packet = self.socket.recv(self.buffer_size)
except socket.error as error:
if error.errno in (EDEADLK, EAGAIN, EWOULDBLOCK):
gevent.sleep()
continue
six.raise_from(NSQSocketError(*error.args), error)
if not packet:
self.close()
self.buffer += packet
data = self.buffer[:size]
self.buffer = self.buffer[size:]
return data
示例8: test_timeout_connect_ex
# 需要导入模块: import errno [as 别名]
# 或者: from errno import EWOULDBLOCK [as 别名]
def test_timeout_connect_ex(self):
# Issue #12065: on a timeout, connect_ex() should return the original
# errno (mimicking the behaviour of non-SSL sockets).
with support.transient_internet(REMOTE_HOST):
s = ssl.wrap_socket(socket.socket(socket.AF_INET),
cert_reqs=ssl.CERT_REQUIRED,
ca_certs=REMOTE_ROOT_CERT,
do_handshake_on_connect=False)
try:
s.settimeout(0.0000001)
rc = s.connect_ex((REMOTE_HOST, 443))
if rc == 0:
self.skipTest("REMOTE_HOST responded too quickly")
self.assertIn(rc, (errno.EAGAIN, errno.EWOULDBLOCK))
finally:
s.close()
示例9: test_connect_ex_error
# 需要导入模块: import errno [as 别名]
# 或者: from errno import EWOULDBLOCK [as 别名]
def test_connect_ex_error(self):
with support.transient_internet(REMOTE_HOST):
s = ssl.wrap_socket(socket.socket(socket.AF_INET),
cert_reqs=ssl.CERT_REQUIRED,
ca_certs=REMOTE_ROOT_CERT)
try:
rc = s.connect_ex((REMOTE_HOST, 444))
# Issue #19919: Windows machines or VMs hosted on Windows
# machines sometimes return EWOULDBLOCK.
errors = (
errno.ECONNREFUSED, errno.EHOSTUNREACH, errno.ETIMEDOUT,
errno.EWOULDBLOCK,
)
self.assertIn(rc, errors)
finally:
s.close()
示例10: write_to_fd
# 需要导入模块: import errno [as 别名]
# 或者: from errno import EWOULDBLOCK [as 别名]
def write_to_fd(self, data: memoryview) -> int:
try:
return self.socket.send(data) # type: ignore
except ssl.SSLError as e:
if e.args[0] == ssl.SSL_ERROR_WANT_WRITE:
# In Python 3.5+, SSLSocket.send raises a WANT_WRITE error if
# the socket is not writeable; we need to transform this into
# an EWOULDBLOCK socket.error or a zero return value,
# either of which will be recognized by the caller of this
# method. Prior to Python 3.5, an unwriteable socket would
# simply return 0 bytes written.
return 0
raise
finally:
# Avoid keeping to data, which can be a memoryview.
# See https://github.com/tornadoweb/tornado/pull/2008
del data
示例11: recv_callback
# 需要导入模块: import errno [as 别名]
# 或者: from errno import EWOULDBLOCK [as 别名]
def recv_callback(self, fd, flags):
if flags & (GLib.IO_ERR | GLib.IO_HUP):
self.stop(f"Bad client flags: {flags}")
return True
try:
data = self._sock.recv(4096)
except OSError as exc:
if exc.errno not in (errno.EWOULDBLOCK, errno.EINTR):
self.stop(f"Unexpected client error: {exc}")
return True
if not data:
self.disable_recv()
self.actor_ref.tell({"close": True})
return True
try:
self.actor_ref.tell({"received": data})
except pykka.ActorDeadError:
self.stop("Actor is dead.")
return True
示例12: send
# 需要导入模块: import errno [as 别名]
# 或者: from errno import EWOULDBLOCK [as 别名]
def send(self, message, flags):
with self.send_token:
if not self.state.ESTABLISHED:
self.err("send() in socket state {0}".format(self.state))
if self.state.CLOSE_WAIT:
raise err.Error(errno.EPIPE)
raise err.Error(errno.ENOTCONN)
if len(message) > self.send_miu:
raise err.Error(errno.EMSGSIZE)
while self.send_window_slots == 0 and self.state.ESTABLISHED:
if flags & nfc.llcp.MSG_DONTWAIT:
raise err.Error(errno.EWOULDBLOCK)
self.log("waiting on busy send window")
self.send_token.wait()
self.log("send {0} byte on {1}".format(len(message), str(self)))
if self.state.ESTABLISHED:
send_pdu = pdu.Information(self.peer, self.addr, data=message)
send_pdu.ns = self.send_cnt
self.send_cnt = (self.send_cnt + 1) % 16
super(DataLinkConnection, self).send(send_pdu, flags)
return self.state.ESTABLISHED is True
示例13: _socketpair_compat
# 需要导入模块: import errno [as 别名]
# 或者: from errno import EWOULDBLOCK [as 别名]
def _socketpair_compat():
"""TCP/IP socketpair including Windows support"""
listensock = socket.socket(socket.AF_INET, socket.SOCK_STREAM, socket.IPPROTO_IP)
listensock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
listensock.bind(("127.0.0.1", 0))
listensock.listen(1)
iface, port = listensock.getsockname()
sock1 = socket.socket(socket.AF_INET, socket.SOCK_STREAM, socket.IPPROTO_IP)
sock1.setblocking(0)
try:
sock1.connect(("localhost", port))
except socket.error as err:
if err.errno != errno.EINPROGRESS and err.errno != errno.EWOULDBLOCK and err.errno != EAGAIN:
raise
sock2, address = listensock.accept()
sock2.setblocking(0)
listensock.close()
return (sock1, sock2)
示例14: test_timeout_connect_ex
# 需要导入模块: import errno [as 别名]
# 或者: from errno import EWOULDBLOCK [as 别名]
def test_timeout_connect_ex(self):
# Issue #12065: on a timeout, connect_ex() should return the original
# errno (mimicking the behaviour of non-SSL sockets).
with test_support.transient_internet("svn.python.org"):
s = ssl.wrap_socket(socket.socket(socket.AF_INET),
cert_reqs=ssl.CERT_REQUIRED,
ca_certs=SVN_PYTHON_ORG_ROOT_CERT,
do_handshake_on_connect=False)
try:
s.settimeout(0.0000001)
rc = s.connect_ex(('svn.python.org', 443))
if rc == 0:
self.skipTest("svn.python.org responded too quickly")
self.assertIn(rc, (errno.EAGAIN, errno.EWOULDBLOCK))
finally:
s.close()
示例15: doRead
# 需要导入模块: import errno [as 别名]
# 或者: from errno import EWOULDBLOCK [as 别名]
def doRead(self):
"""Calls self.protocol.dataReceived with all available data.
This reads up to self.bufferSize bytes of data from its socket, then
calls self.dataReceived(data) to process it. If the connection is not
lost through an error in the physical recv(), this function will return
the result of the dataReceived call.
"""
try:
data = self.socket.recv(self.bufferSize)
except socket.error as se:
if se.args[0] == EWOULDBLOCK:
return
else:
return main.CONNECTION_LOST
return self._dataReceived(data)