From 37e318befb56f84fe8ed4f0999210e3c5d9266f6 Mon Sep 17 00:00:00 2001 From: Aaron Hill Date: Sat, 5 Nov 2016 19:08:13 -0400 Subject: [PATCH] Properly re-raise exceptions during streaming --- tweepy/streaming.py | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/tweepy/streaming.py b/tweepy/streaming.py index e6fb0b9..c67047c 100644 --- a/tweepy/streaming.py +++ b/tweepy/streaming.py @@ -9,6 +9,7 @@ from __future__ import absolute_import, print_function import logging import re import requests +import sys from requests.exceptions import Timeout from threading import Thread from time import sleep @@ -230,7 +231,7 @@ class Stream(object): # Connect and process the stream error_counter = 0 resp = None - exception = None + exc_info = None while self.running: if self.retry_count is not None: if error_counter > self.retry_count: @@ -267,7 +268,7 @@ class Stream(object): # If it's not time out treat it like any other exception if isinstance(exc, ssl.SSLError): if not (exc.args and 'timed out' in str(exc.args[0])): - exception = exc + exc_info = sys.exc_info() break if self.listener.on_timeout() is False: break @@ -277,7 +278,9 @@ class Stream(object): self.snooze_time = min(self.snooze_time + self.snooze_time_step, self.snooze_time_cap) except Exception as exc: - exception = exc + exc_info = sys.exc_info() + print(exc_info) + import pdb; pdb.post_mortem(exc_info[2]) # any other exception is fatal, so kill loop break @@ -288,10 +291,10 @@ class Stream(object): self.new_session() - if exception: + if exc_info: # call a handler first so that the exception can be logged. - self.listener.on_exception(exception) - raise exception + self.listener.on_exception(exc_info[1]) + six.reraise(*exc_info) def _data(self, data): if self.listener.on_data(data) is False: -- 2.25.1