From c02f1aa5f1ac3c96bb2b3604fd609c3205f5d65b Mon Sep 17 00:00:00 2001 From: Ankush Menat Date: Fri, 13 Jun 2025 11:25:50 +0530 Subject: [PATCH 1/2] perf: Always defer web page view logs Unnecessary continuous load on DB. --- frappe/website/doctype/web_page_view/web_page_view.py | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/frappe/website/doctype/web_page_view/web_page_view.py b/frappe/website/doctype/web_page_view/web_page_view.py index 6750b83f9b..bba9e76a30 100644 --- a/frappe/website/doctype/web_page_view/web_page_view.py +++ b/frappe/website/doctype/web_page_view/web_page_view.py @@ -93,10 +93,7 @@ def make_view_log( view.visitor_id = visitor_id try: - if frappe.flags.read_only: - view.deferred_insert() - else: - view.insert(ignore_permissions=True) + view.deferred_insert() except Exception: frappe.clear_last_message() From c26312156388cd12ba5fd7310ae361f051db0142 Mon Sep 17 00:00:00 2001 From: Ankush Menat Date: Fri, 13 Jun 2025 11:29:35 +0530 Subject: [PATCH 2/2] fix: Commit frequently in deferred_insert Note: we aren't handling any failures here, just committing succesful inserts. Also increased limit on record count. --- frappe/deferred_insert.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/frappe/deferred_insert.py b/frappe/deferred_insert.py index fd370d8ac5..ced404c896 100644 --- a/frappe/deferred_insert.py +++ b/frappe/deferred_insert.py @@ -31,7 +31,7 @@ def save_to_db(): record_count = 0 queue_key = get_key_name(key) doctype = get_doctype_name(key) - while frappe.cache.llen(queue_key) > 0 and record_count <= 500: + while frappe.cache.llen(queue_key) > 0 and record_count <= 10000: records = frappe.cache.lpop(queue_key) records = json.loads(records.decode("utf-8")) if isinstance(records, dict): @@ -41,6 +41,11 @@ def save_to_db(): for record in records: record_count += 1 insert_record(record, doctype) + if record_count % 100 == 0: + frappe.db.commit() + + if record_count % 100 == 0: + frappe.db.commit() def insert_record(record: Union[dict, "Document"], doctype: str):