Show facets that timed out using new InterruptedError

If the user requests some _facet= options that do not successfully execute in
the configured facet_time_limit_ms, we now show a warning message like this:

    These facets timed out: rowid, Title

To build this I had to clean up our SQLite interrupted logic. We now raise a
custom InterruptedError exception when SQLite terminates due to exceeding a
time limit.

In implementing this I found and fixed a logic error where invalid SQL was
being generated in some cases for our faceting calculations but the resulting
sqlite3.OperationalError had been incorrectly captured and treated as a
timeout.

Refs #255
Closes #269
This commit is contained in:
Simon Willison 2018-05-17 23:07:45 -07:00
commit 08f4b7658f
No known key found for this signature in database
GPG key ID: 17E2DEA2588B7F52
4 changed files with 34 additions and 16 deletions

View file

@ -32,6 +32,10 @@ reserved_words = set((
).split())
class InterruptedError(Exception):
pass
def urlsafe_components(token):
"Splits token on commas and URL decodes each component"
return [