feat: better bench doctor in UI

This commit is contained in:
Ankush Menat 2024-04-18 17:45:58 +05:30
parent d410af79db
commit d7a0ed8971
5 changed files with 121 additions and 1 deletions

View file

@ -0,0 +1,39 @@
{
"actions": [],
"allow_rename": 1,
"creation": "2024-04-18 17:38:33.006527",
"doctype": "DocType",
"editable_grid": 1,
"engine": "InnoDB",
"field_order": [
"queue",
"pending_jobs"
],
"fields": [
{
"fieldname": "queue",
"fieldtype": "Data",
"in_list_view": 1,
"label": "Queue"
},
{
"fieldname": "pending_jobs",
"fieldtype": "Int",
"in_list_view": 1,
"label": "Pending Jobs"
}
],
"index_web_pages_for_search": 1,
"is_virtual": 1,
"istable": 1,
"links": [],
"modified": "2024-04-18 17:38:59.244386",
"modified_by": "Administrator",
"module": "Desk",
"name": "System Health Queue",
"owner": "Administrator",
"permissions": [],
"sort_field": "creation",
"sort_order": "DESC",
"states": []
}

View file

@ -0,0 +1,46 @@
# Copyright (c) 2024, Frappe Technologies and contributors
# For license information, please see license.txt
# import frappe
from frappe.model.document import Document
class SystemHealthQueue(Document):
# begin: auto-generated types
# This code is auto-generated. Do not modify anything in this block.
from typing import TYPE_CHECKING
if TYPE_CHECKING:
from frappe.types import DF
parent: DF.Data
parentfield: DF.Data
parenttype: DF.Data
pending_jobs: DF.Int
queue: DF.Data | None
# end: auto-generated types
def db_insert(self, *args, **kwargs):
raise NotImplementedError
def load_from_db(self):
raise NotImplementedError
def db_update(self):
raise NotImplementedError
def delete(self):
raise NotImplementedError
@staticmethod
def get_list(filters=None, page_length=20, **kwargs):
pass
@staticmethod
def get_count(filters=None, **kwargs):
pass
@staticmethod
def get_stats(**kwargs):
pass

View file

@ -6,7 +6,11 @@
"field_order": [
"background_jobs_section",
"scheduler_status",
"column_break_klex",
"total_background_workers",
"section_break_djoz",
"queue_status",
"column_break_wjoz",
"background_workers"
],
"fields": [
@ -30,6 +34,24 @@
"fieldname": "scheduler_status",
"fieldtype": "Data",
"label": "Scheduler Status"
},
{
"fieldname": "queue_status",
"fieldtype": "Table",
"label": "Queue Status",
"options": "System Health Queue"
},
{
"fieldname": "column_break_klex",
"fieldtype": "Column Break"
},
{
"fieldname": "section_break_djoz",
"fieldtype": "Section Break"
},
{
"fieldname": "column_break_wjoz",
"fieldtype": "Column Break"
}
],
"hide_toolbar": 1,
@ -37,7 +59,7 @@
"is_virtual": 1,
"issingle": 1,
"links": [],
"modified": "2024-04-18 17:32:01.054494",
"modified": "2024-04-18 17:44:06.856892",
"modified_by": "Administrator",
"module": "Desk",
"name": "System Health Report",

View file

@ -24,6 +24,7 @@ from collections import defaultdict
import frappe
from frappe.model.document import Document
from frappe.utils.background_jobs import get_queue, get_queue_list
from frappe.utils.scheduler import get_scheduler_status
@ -34,10 +35,12 @@ class SystemHealthReport(Document):
from typing import TYPE_CHECKING
if TYPE_CHECKING:
from frappe.desk.doctype.system_health_queue.system_health_queue import SystemHealthQueue
from frappe.desk.doctype.system_health_workers.system_health_workers import SystemHealthWorkers
from frappe.types import DF
background_workers: DF.Table[SystemHealthWorkers]
queue_status: DF.Table[SystemHealthQueue]
scheduler_status: DF.Data | None
total_background_workers: DF.Int
# end: auto-generated types
@ -69,6 +72,16 @@ class SystemHealthReport(Document):
},
)
for queue in get_queue_list():
q = get_queue(queue)
self.append(
"queue_status",
{
"queue": queue,
"pending_jobs": q.count,
},
)
def db_update(self):
raise NotImplementedError