Procházet zdrojové kódy

fix: optimize query for expired workflow runs by adding date filter and limiting results (#16491)

Yeuoly před 1 měsícem
rodič
revize
1907d2a90a

+ 9 - 1
api/services/clear_free_plan_tenant_expired_logs.py

@@ -149,7 +149,15 @@ class ClearFreePlanTenantExpiredLogs:
 
 
             while True:
             while True:
                 with Session(db.engine).no_autoflush as session:
                 with Session(db.engine).no_autoflush as session:
-                    workflow_runs = session.query(WorkflowRun).filter(WorkflowRun.tenant_id == tenant_id).all()
+                    workflow_runs = (
+                        session.query(WorkflowRun)
+                        .filter(
+                            WorkflowRun.tenant_id == tenant_id,
+                            WorkflowRun.created_at < datetime.datetime.now() - datetime.timedelta(days=days),
+                        )
+                        .limit(batch)
+                        .all()
+                    )
 
 
                     if len(workflow_runs) == 0:
                     if len(workflow_runs) == 0:
                         break
                         break