Thanks George, this is a great question! I've expanded our tutorial to hopefully cover this a bit better...
https://stem.torproject.org/tutorials/tortoise_and_the_hare.html#advanced-li...
You can trivially print exceptions within your listener if that is all you care about...
========================================
import time import traceback
from stem.control import EventType, Controller
def broken_handler(event): try: raise ValueError('boom') except: print(traceback.format_exc())
with Controller.from_port() as controller: controller.authenticate() controller.add_event_listener(broken_handler, EventType.BW) time.sleep(2)
========================================
% python demo.py Traceback (most recent call last): File "demo.py", line 9, in broken_handler raise ValueError('boom') ValueError: boom
Traceback (most recent call last): File "demo.py", line 9, in broken_handler raise ValueError('boom') ValueError: boom
========================================
... but if your event handler has grown sophisticated enough to make this a significant issue I'd suggest a producer/consumer model as the tutorial now demonstrates.
Cheers! -Damian