Fix task API stability and Playwright runtime in Docker
This commit is contained in:
@@ -11,7 +11,7 @@ import asyncio
|
||||
import threading
|
||||
import inspect
|
||||
from concurrent.futures import ThreadPoolExecutor
|
||||
from datetime import datetime
|
||||
from datetime import datetime, timezone
|
||||
from typing import Dict, Any, List, Optional
|
||||
|
||||
from .models import Task, TaskStatus, LogEntry, LogFilter, LogStats
|
||||
@@ -329,8 +329,18 @@ class TaskManager:
|
||||
tasks = [t for t in tasks if t.plugin_id in plugin_id_set]
|
||||
if completed_only:
|
||||
tasks = [t for t in tasks if t.status in [TaskStatus.SUCCESS, TaskStatus.FAILED]]
|
||||
# Sort by start_time descending (most recent first)
|
||||
tasks.sort(key=lambda t: t.started_at or datetime.min, reverse=True)
|
||||
# Sort by started_at descending with tolerant handling of mixed tz-aware/naive values.
|
||||
def sort_key(task: Task) -> float:
|
||||
started_at = task.started_at
|
||||
if started_at is None:
|
||||
return float("-inf")
|
||||
if not isinstance(started_at, datetime):
|
||||
return float("-inf")
|
||||
if started_at.tzinfo is None:
|
||||
return started_at.replace(tzinfo=timezone.utc).timestamp()
|
||||
return started_at.timestamp()
|
||||
|
||||
tasks.sort(key=sort_key, reverse=True)
|
||||
return tasks[offset:offset + limit]
|
||||
# [/DEF:get_tasks:Function]
|
||||
|
||||
|
||||
Reference in New Issue
Block a user