diff options
author | Bryan Newbold <bnewbold@archive.org> | 2019-12-01 15:42:05 -0800 |
---|---|---|
committer | Bryan Newbold <bnewbold@archive.org> | 2019-12-01 15:42:07 -0800 |
commit | aa49ab86e4a86067ba2346d8bccf389be940b8e2 (patch) | |
tree | 19272451a626fdf7cfc8cdbfe581cf7fe3ede05d /python | |
parent | e28125db2735b53e28ab5148379cb8b804c184c6 (diff) | |
download | sandcrawler-aa49ab86e4a86067ba2346d8bccf389be940b8e2.tar.gz sandcrawler-aa49ab86e4a86067ba2346d8bccf389be940b8e2.zip |
filter out very large GROBID XML bodies
This is to prevent Kafka MSG_SIZE_TOO_LARGE publish errors. We should
probably bump this in the future.
Open problems: hand-coding this size number isn't good, need to update
in two places. Shouldn't filter out for non-Kafka sinks. Might still
exist a corner-case where JSON encoded XML is larger than XML character
string, due to encoding (eg, for unicode characters).
Diffstat (limited to 'python')
-rw-r--r-- | python/sandcrawler/grobid.py | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/python/sandcrawler/grobid.py b/python/sandcrawler/grobid.py index d83fedc..31dc270 100644 --- a/python/sandcrawler/grobid.py +++ b/python/sandcrawler/grobid.py @@ -44,6 +44,12 @@ class GrobidClient(object): if grobid_response.status_code == 200: info['status'] = 'success' info['tei_xml'] = grobid_response.text + if len(info['tei_xml']) > 19500000: + # XML is larger than Kafka message size, and much larger than + # an article in general; bail out + info['status'] = 'error' + info['error_msg'] = "response XML too large: {} bytes".format(len(len(info['tei_xml']))) + info.pop('tei_xml') else: # response.text is .content decoded as utf-8 info['status'] = 'error' |