From 775a6f21819d7aaf389a75bd5f21d4e61fba5644 Mon Sep 17 00:00:00 2001 From: Silvian I Date: Mon, 31 May 2021 15:40:57 +0200 Subject: [PATCH] Fix server connection timeout while processiong large dmarc files --- parsedmarc/__init__.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/parsedmarc/__init__.py b/parsedmarc/__init__.py index 562a0a8..9873316 100644 --- a/parsedmarc/__init__.py +++ b/parsedmarc/__init__.py @@ -304,8 +304,12 @@ def parse_aggregate_report_xml(xml, offline=False, nameservers=None, new_report["policy_published"] = new_policy_published if type(report["record"]) == list: - for record in report["record"]: - report_record = _parse_report_record(record, + for i in range(len(report["record"])): + if i % 20 == 0 and i > 0: + logger.debug("Sending noop cmd") + server.noop() + logger.debug("Processed {0}/{1}".format(i, len(report["record"]))) + report_record = _parse_report_record(report["record"][i], offline=offline, nameservers=nameservers, dns_timeout=timeout, @@ -1039,6 +1043,7 @@ def get_dmarc_reports_from_inbox(connection=None, raise ValueError("Must supply a connection, or a username and " "password") + global server aggregate_reports = [] forensic_reports = [] aggregate_report_msg_uids = []