1
0
mirror of https://github.com/webrecorder/pywb.git synced 2025-03-15 00:03:28 +01:00

warc refactor: ArchiveLoadFailed no longer derived from WbException

catch separately, set status to 503 Archive Not Available explicitly
This commit is contained in:
Ilya Kreymer 2017-03-01 18:02:35 -08:00
parent 2b3fde028f
commit 4a94699a65
3 changed files with 10 additions and 7 deletions

View File

@ -7,7 +7,7 @@ from pywb.utils.statusandheaders import StatusAndHeadersParserException
from pywb.utils.limitreader import LimitReader
from pywb.utils.loaders import to_native_str
from pywb.utils.wbexception import WbException
#from pywb.utils.wbexception import WbException
from pywb.utils.timeutils import timestamp_to_iso_date
from six.moves import zip
@ -27,7 +27,7 @@ class ArcWarcRecord(object):
#=================================================================
class ArchiveLoadFailed(WbException):
class ArchiveLoadFailed(Exception):
def __init__(self, reason, filename=''):
if filename:
msg = filename + ': ' + str(reason)
@ -35,9 +35,7 @@ class ArchiveLoadFailed(WbException):
msg = str(reason)
super(ArchiveLoadFailed, self).__init__(msg)
def status(self):
return '503 Service Unavailable'
self.msg = msg
#=================================================================

View File

@ -107,7 +107,11 @@ class ResAggApp(object):
if self.debug:
traceback.print_exc()
status = last_exc.status()
if not hasattr(last_exc, 'status'):
status = '503 Archive Not Available'
else:
status = last_exc.status()
message = last_exc.msg
res = {'message': message}

View File

@ -2,6 +2,7 @@ from pywb.webagg.responseloader import WARCPathLoader, LiveWebLoader, VideoLoad
from pywb.webagg.utils import MementoUtils
from pywb.utils.wbexception import BadRequestException, WbException
from pywb.utils.wbexception import NotFoundException
from pywb.warc.recordloader import ArchiveLoadFailed
from pywb.cdx.query import CDXQuery
from pywb.cdx.cdxdomainspecific import load_domain_specific_cdx_rules
@ -151,7 +152,7 @@ class ResourceHandler(IndexHandler):
out_headers, resp = loader(cdx, params)
if resp is not None:
return out_headers, resp, errs
except WbException as e:
except (WbException, ArchiveLoadFailed) as e:
last_exc = e
errs[str(loader)] = str(e)