StatusReporter exception handler to prevent thread from dying under any circumstances
This commit is contained in:
parent
54523e264c
commit
53dc92b204
|
@ -57,7 +57,8 @@ def process_http_requests(ipc_queue, http_retry_queue_path):
|
||||||
logging.error("Failed to unpickle %s. Continuing..." % http_retry_queue_path)
|
logging.error("Failed to unpickle %s. Continuing..." % http_retry_queue_path)
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
while True:
|
||||||
|
try:
|
||||||
while not shutdown:
|
while not shutdown:
|
||||||
try:
|
try:
|
||||||
request = ipc_queue.get(block=True, timeout=5)
|
request = ipc_queue.get(block=True, timeout=5)
|
||||||
|
@ -84,6 +85,14 @@ def process_http_requests(ipc_queue, http_retry_queue_path):
|
||||||
# while the web server is down or unreachable.
|
# while the web server is down or unreachable.
|
||||||
with open(http_retry_queue_path, 'wb') as pickle_file:
|
with open(http_retry_queue_path, 'wb') as pickle_file:
|
||||||
pickle.dump(retry_queue, pickle_file)
|
pickle.dump(retry_queue, pickle_file)
|
||||||
|
except Exception as e: # Terrible top-level exception handler to prevent the thread from dying, just in case.
|
||||||
|
if shutdown:
|
||||||
|
return
|
||||||
|
logging.exception("Unhandled exception in StatusReporter")
|
||||||
|
logging.exception(e)
|
||||||
|
logging.info("Restarting StatusReporter thread")
|
||||||
|
time.sleep(2) # Throttle it
|
||||||
|
|
||||||
|
|
||||||
def send_http_request(picklable_request, retry_queue):
|
def send_http_request(picklable_request, retry_queue):
|
||||||
if not isinstance(picklable_request, PicklableHttpRequest):
|
if not isinstance(picklable_request, PicklableHttpRequest):
|
||||||
|
|
Loading…
Reference in New Issue