From 1eb0374a115e52ad667ca829f1269448a2911262 Mon Sep 17 00:00:00 2001 From: Laurent Peuch Date: Sun, 23 Jun 2019 02:37:49 +0200 Subject: [PATCH] [fix] avoid fetch log field from the db to reduce memory usage --- run.py | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/run.py b/run.py index a19a3b0..c5f3aca 100644 --- a/run.py +++ b/run.py @@ -545,22 +545,33 @@ def chunks(l, n): async def ws_index(request, websocket): subscribe(websocket, "jobs") + # avoid fetch "log" field from the db to reduce memory usage + selected_fields = ( + Job.id, + Job.name, + Job.url_or_path, + Job.state, + Job.created_time, + Job.started_time, + Job.end_time, + ) + JobAlias = Job.alias() - subquery = JobAlias.select()\ + subquery = JobAlias.select(*selected_fields)\ .where(JobAlias.state << ("done", "failure", "canceled", "error"))\ .group_by(JobAlias.url_or_path)\ .select(fn.Max(JobAlias.id).alias("max_id")) - latest_done_jobs = Job.select()\ + latest_done_jobs = Job.select(*selected_fields)\ .join(subquery, on=(Job.id == subquery.c.max_id))\ .order_by(-Job.id) - subquery = JobAlias.select()\ + subquery = JobAlias.select(*selected_fields)\ .where(JobAlias.state == "scheduled")\ .group_by(JobAlias.url_or_path)\ .select(fn.Min(JobAlias.id).alias("min_id")) - next_scheduled_jobs = Job.select()\ + next_scheduled_jobs = Job.select(*selected_fields)\ .join(subquery, on=(Job.id == subquery.c.min_id))\ .order_by(-Job.id)