本文整理匯總了Python中select.KQ_EV_ERROR屬性的典型用法代碼示例。如果您正苦於以下問題:Python select.KQ_EV_ERROR屬性的具體用法?Python select.KQ_EV_ERROR怎麽用?Python select.KQ_EV_ERROR使用的例子?那麽, 這裏精選的屬性代碼示例或許可以為您提供幫助。您也可以進一步了解該屬性所在類select
的用法示例。
在下文中一共展示了select.KQ_EV_ERROR屬性的5個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Python代碼示例。
示例1: poll
# 需要導入模塊: import select [as 別名]
# 或者: from select import KQ_EV_ERROR [as 別名]
def poll(self, timeout):
kevents = self._kqueue.control(None, 1000, timeout)
events = {}
for kevent in kevents:
fd = kevent.ident
if kevent.filter == select.KQ_FILTER_READ:
events[fd] = events.get(fd, 0) | IOLoop.READ
if kevent.filter == select.KQ_FILTER_WRITE:
if kevent.flags & select.KQ_EV_EOF:
# If an asynchronous connection is refused, kqueue
# returns a write event with the EOF flag set.
# Turn this into an error for consistency with the
# other IOLoop implementations.
# Note that for read events, EOF may be returned before
# all data has been consumed from the socket buffer,
# so we only check for EOF on write events.
events[fd] = IOLoop.ERROR
else:
events[fd] = events.get(fd, 0) | IOLoop.WRITE
if kevent.flags & select.KQ_EV_ERROR:
events[fd] = events.get(fd, 0) | IOLoop.ERROR
return events.items()
示例2: testPair
# 需要導入模塊: import select [as 別名]
# 或者: from select import KQ_EV_ERROR [as 別名]
def testPair(self):
kq = select.kqueue()
a, b = socket.socketpair()
a.send(b'foo')
event1 = select.kevent(a, select.KQ_FILTER_READ, select.KQ_EV_ADD | select.KQ_EV_ENABLE)
event2 = select.kevent(b, select.KQ_FILTER_READ, select.KQ_EV_ADD | select.KQ_EV_ENABLE)
r = kq.control([event1, event2], 1, 1)
self.assertTrue(r)
self.assertFalse(r[0].flags & select.KQ_EV_ERROR)
self.assertEqual(b.recv(r[0].data), b'foo')
a.close()
b.close()
kq.close()
示例3: poll
# 需要導入模塊: import select [as 別名]
# 或者: from select import KQ_EV_ERROR [as 別名]
def poll(self,
timeout,
_len=len,
_READ=select.KQ_FILTER_READ,
_WRITE=select.KQ_FILTER_WRITE,
_EOF=select.KQ_EV_EOF,
_ERROR=select.KQ_EV_ERROR):
try:
kevents = self._kqueue.control(None, _len(self.socket_map),
timeout)
except OSError as err:
if err.errno == errno.EINTR:
return
raise
for kevent in kevents:
inst = self.socket_map.get(kevent.ident)
if inst is None:
continue
if kevent.filter == _READ:
if inst.readable():
_read(inst)
if kevent.filter == _WRITE:
if kevent.flags & _EOF:
# If an asynchronous connection is refused,
# kqueue returns a write event with the EOF
# flag set.
# Note that for read events, EOF may be returned
# before all data has been consumed from the
# socket buffer, so we only check for EOF on
# write events.
inst.handle_close()
else:
if inst.writable():
_write(inst)
if kevent.flags & _ERROR:
inst.handle_close()
# ===================================================================
# --- choose the better poller for this platform
# ===================================================================
示例4: poll
# 需要導入模塊: import select [as 別名]
# 或者: from select import KQ_EV_ERROR [as 別名]
def poll(self, timeout):
kevents = self._kqueue.control(None, 1000, timeout)
events = {}
for kevent in kevents:
fd = kevent.ident
flags = 0
if kevent.filter == select.KQ_FILTER_READ:
events[fd] = events.get(fd, 0) | IOLoop.READ
if kevent.filter == select.KQ_FILTER_WRITE:
events[fd] = events.get(fd, 0) | IOLoop.WRITE
if kevent.flags & select.KQ_EV_ERROR:
events[fd] = events.get(fd, 0) | IOLoop.ERROR
return events.items()
示例5: start
# 需要導入模塊: import select [as 別名]
# 或者: from select import KQ_EV_ERROR [as 別名]
def start(self):
while True:
eventlist = self.kq.control(None, 100, 1)
for event in eventlist:
send = True
if event.flags & select.KQ_EV_ERROR:
send = self.onSocketEvent(event.ident, sockConnect.socketEventExcept)
elif event.filter == select.KQ_FILTER_READ:
send = self.onSocketEvent(event.ident, sockConnect.socketEventCanRecv)
elif event.filter == select.KQ_FILTER_WRITE:
if event.flags & select.KQ_EV_EOF:
send = self.onSocketEvent(event.ident, sockConnect.socketEventExcept)
else:
send = self.onSocketEvent(event.ident, sockConnect.socketEventCanSend)
if not send:
try:
self.kq.control([select.kevent(event.ident, filter=select.KQ_FILTER_WRITE,
flags=select.KQ_EV_DELETE)], 0)
except:
pass
try:
self.kq.control([select.kevent(event.ident, filter=select.KQ_FILTER_READ,
flags=select.KQ_EV_DELETE)], 0)
except:
pass
self._handlerCallback()