def reap(self):
# find DNS requests that have timed out
now = int(time.time())
if now - self.last_reap_time > 180:
# reap every 3 minutes
self.last_reap_time = now # update before we forget
for k, (host, unpack, callback, when) in self.request_map.items():
if now - when > 180:
# over 3 minutes old
del self.request_map[k]
try:
# same code as in handle_read
callback(host, 0, None) # timeout val is (0,None)
except Exception:
(file, fun, line), t, v, tbinfo = \
asyncore.compact_traceback()
self.log_info('%s %s %s' % (t, v, tbinfo), 'error')
python类compact_traceback()的实例源码
def trace (self, name = ""):
if self.logger:
self.logger.trace (name)
else:
print(asyncore.compact_traceback ())
#----------------------------------------------------------------
# database connect
#----------------------------------------------------------------
def trace (multirows = False):
(file, fun, line), t, v, tbinfo = asyncore.compact_traceback()
try: v = str (v)
except: v = repr (v)
line = "%s %s Traceback: %s" % (t, v, tbinfo)
if multirows:
line = trace ().replace ("] [", "\n - ")
line = line.replace ("Traceback: [", "\n -----------\n + Traceback\n ===========\n - ")
line = line [:-1] + "\n -----------"
return line
def handle_error (self):
dummy, exception_class, exception_str, tbinfo = asyncore.compact_traceback()
self.has_result = False
self.logger.trace ()
self.handle_close (exception_class, exception_str)
def handle_error (self):
self.trace ()
self.__code = 900
self.__resp = asyncore.compact_traceback() [1].__name__
self.close()
def test_compact_traceback(self):
try:
raise Exception("I don't like spam!")
except:
real_t, real_v, real_tb = sys.exc_info()
r = asyncore.compact_traceback()
else:
self.fail("Expected exception")
(f, function, line), t, v, info = r
self.assertEqual(os.path.split(f)[-1], 'test_asyncore.py')
self.assertEqual(function, 'test_compact_traceback')
self.assertEqual(t, real_t)
self.assertEqual(v, real_v)
self.assertEqual(info, '[%s|%s|%s]' % (f, function, line))
def test_compact_traceback(self):
try:
raise Exception("I don't like spam!")
except:
real_t, real_v, real_tb = sys.exc_info()
r = asyncore.compact_traceback()
else:
self.fail("Expected exception")
(f, function, line), t, v, info = r
self.assertEqual(os.path.split(f)[-1], 'test_asyncore.py')
self.assertEqual(function, 'test_compact_traceback')
self.assertEqual(t, real_t)
self.assertEqual(v, real_v)
self.assertEqual(info, '[%s|%s|%s]' % (f, function, line))
def test_compact_traceback(self):
try:
raise Exception("I don't like spam!")
except:
real_t, real_v, real_tb = sys.exc_info()
r = asyncore.compact_traceback()
else:
self.fail("Expected exception")
(f, function, line), t, v, info = r
self.assertEqual(os.path.split(f)[-1], 'test_asyncore.py')
self.assertEqual(function, 'test_compact_traceback')
self.assertEqual(t, real_t)
self.assertEqual(v, real_v)
self.assertEqual(info, '[%s|%s|%s]' % (f, function, line))
def test_compact_traceback(self):
try:
raise Exception("I don't like spam!")
except:
real_t, real_v, real_tb = sys.exc_info()
r = asyncore.compact_traceback()
else:
self.fail("Expected exception")
(f, function, line), t, v, info = r
self.assertEqual(os.path.split(f)[-1], 'test_asyncore.py')
self.assertEqual(function, 'test_compact_traceback')
self.assertEqual(t, real_t)
self.assertEqual(v, real_v)
self.assertEqual(info, '[%s|%s|%s]' % (f, function, line))
def test_compact_traceback(self):
try:
raise Exception("I don't like spam!")
except:
real_t, real_v, real_tb = sys.exc_info()
r = asyncore.compact_traceback()
else:
self.fail("Expected exception")
(f, function, line), t, v, info = r
self.assertEqual(os.path.split(f)[-1], 'test_asyncore.py')
self.assertEqual(function, 'test_compact_traceback')
self.assertEqual(t, real_t)
self.assertEqual(v, real_v)
self.assertEqual(info, '[%s|%s|%s]' % (f, function, line))
def test_compact_traceback(self):
try:
raise Exception("I don't like spam!")
except:
real_t, real_v, real_tb = sys.exc_info()
r = asyncore.compact_traceback()
else:
self.fail("Expected exception")
(f, function, line), t, v, info = r
self.assertEqual(os.path.split(f)[-1], 'test_asyncore.py')
self.assertEqual(function, 'test_compact_traceback')
self.assertEqual(t, real_t)
self.assertEqual(v, real_v)
self.assertEqual(info, '[%s|%s|%s]' % (f, function, line))
def test_compact_traceback(self):
try:
raise Exception("I don't like spam!")
except:
real_t, real_v, real_tb = sys.exc_info()
r = asyncore.compact_traceback()
else:
self.fail("Expected exception")
(f, function, line), t, v, info = r
self.assertEqual(os.path.split(f)[-1], 'test_asyncore.py')
self.assertEqual(function, 'test_compact_traceback')
self.assertEqual(t, real_t)
self.assertEqual(v, real_v)
self.assertEqual(info, '[%s|%s|%s]' % (f, function, line))
def test_compact_traceback(self):
try:
raise Exception("I don't like spam!")
except:
real_t, real_v, real_tb = sys.exc_info()
r = asyncore.compact_traceback()
else:
self.fail("Expected exception")
(f, function, line), t, v, info = r
self.assertEqual(os.path.split(f)[-1], 'test_asyncore.py')
self.assertEqual(function, 'test_compact_traceback')
self.assertEqual(t, real_t)
self.assertEqual(v, real_v)
self.assertEqual(info, '[%s|%s|%s]' % (f, function, line))
def handle_error(self): # don't close the socket on error
(file, fun, line), t, v, tbinfo = asyncore.compact_traceback()
self.log_info('Problem in Clock (%s:%s %s)' % (t, v, tbinfo),
'error')
def handle_error(self):
# don't close the socket on error
(file, fun, line), t, v, tbinfo = asyncore.compact_traceback()
self.log_info('Problem in ICP (%s:%s %s)' % (t, v, tbinfo),
'error')
def handle_read(self):
self.recv(8192)
try:
self.lock.acquire()
for thunk in self.thunks:
try:
thunk()
except:
(file, fun, line), t, v, tbinfo = \
asyncore.compact_traceback()
print('exception in trigger thunk: (%s:%s %s)' % (
t, v, tbinfo))
self.thunks = []
finally:
self.lock.release()
def handle_read(self):
self.recv(8192)
try:
self.lock.acquire()
for thunk in self.thunks:
try:
thunk()
except:
(file, fun, line), t, v, tbinfo = \
asyncore.compact_traceback()
print('exception in trigger thunk: (%s:%s %s)' %
(t, v, tbinfo))
self.thunks = []
finally:
self.lock.release()
def handle_read(self):
reply, whence = self.socket.recvfrom(512)
# for security reasons we may want to double-check
# that <whence> is the server we sent the request to.
id = (ord(reply[0]) << 8) + ord(reply[1])
if id in self.request_map:
host, unpack, callback, when = self.request_map[id]
del self.request_map[id]
ttl, answer = unpack(reply)
try:
callback(host, ttl, answer)
except Exception:
(file, fun, line), t, v, tbinfo = asyncore.compact_traceback()
self.log_info('%s %s %s' % (t, v, tbinfo), 'error')
def found_terminator(self):
line = self.in_buffer
if not len(line):
return
sp = string.find(line, ' ')
if sp != -1:
line = [line[:sp], line[sp + 1:]]
else:
line = [line]
command = string.lower(line[0])
# watch especially for 'urgent' abort commands.
if string.find(command, 'abor') != -1:
# strip off telnet sync chars and the like...
while command and command[0] not in string.letters:
command = command[1:]
fun_name = 'cmd_%s' % command
if command != 'pass':
self.log('<== %s' % repr(self.in_buffer)[1:-1])
else:
self.log('<== %s' % line[0] + ' <password>')
self.in_buffer = ''
if not hasattr(self, fun_name):
self.command_not_understood(line[0])
return
fun = getattr(self, fun_name)
if (not self.authorized) and (command not in (
'user', 'pass', 'help', 'quit')):
self.respond('530 Please log in with USER and PASS')
elif (not self.check_command_authorization(command)):
self.command_not_authorized(command)
else:
try:
fun(line)
except Exception:
self.server.total_exceptions.increment()
(file, fun, line), t, v, tbinfo = asyncore.compact_traceback()
if self.client_dc:
try:
self.client_dc.close()
except Exception:
pass
self.respond(
'451 Server Error: %s, %s: file: %s line: %s' % (
t, v, file, line,
)
)