[Python-ideas] asyncore: included batteries don't fit
Greg Ewing
greg.ewing at canterbury.ac.nz
Wed Oct 10 09:53:04 CEST 2012
Guido van Rossum wrote:
> But there are
> still quite a few situations in NDB where an uncaught
> exception prints a baffling traceback, showing lots of frames from the
> event loop and other async machinery but not the user code that was
> actually waiting for anything.
I just tried an experiment using Python 3.3. I modified the
parse_request() function of my spamserver example to raise
an exception that isn't caught anywhere:
def parse_request(line):
tokens = line.split()
print(tokens)
if tokens and tokens[0] == b"EGGS":
raise ValueError("Server is allergic to eggs")
...
The resulting traceback looks like this. The last two lines
show very clearly where abouts the exception occurred in
user code. So it all seems to work quite happily.
Traceback (most recent call last):
File "spamserver.py", line 73, in <module>
run2()
File
"/Local/Projects/D/Python/YieldFrom/3.3/Examples/Scheduler/scheduler.py", line
109, in run2
run()
File
"/Local/Projects/D/Python/YieldFrom/3.3/Examples/Scheduler/scheduler.py", line
53, in run
next(g)
File "spamserver.py", line 50, in handler
n = parse_request(line)
File "spamserver.py", line 61, in parse_request
raise ValueError("Server is allergic to eggs")
ValueError: Server is allergic to eggs
--
Greg
More information about the Python-ideas
mailing list