Skip to content

Commit d886db0

Browse files
author
Andrei Neagu
committed
using common renaming
1 parent 2ee9203 commit d886db0

File tree

5 files changed

+26
-28
lines changed

5 files changed

+26
-28
lines changed

packages/service-library/src/servicelib/aiohttp/long_running_tasks/_server.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -129,8 +129,8 @@ def setup(
129129
router_prefix: str,
130130
handler_check_decorator: Callable = no_ops_decorator,
131131
task_request_context_decorator: Callable = no_task_context_decorator,
132-
stale_task_check_interval_s: datetime.timedelta = DEFAULT_STALE_TASK_CHECK_INTERVAL,
133-
stale_task_detect_timeout_s: datetime.timedelta = DEFAULT_STALE_TASK_DETECT_TIMEOUT,
132+
stale_task_check_interval: datetime.timedelta = DEFAULT_STALE_TASK_CHECK_INTERVAL,
133+
stale_task_detect_timeout: datetime.timedelta = DEFAULT_STALE_TASK_DETECT_TIMEOUT,
134134
) -> None:
135135
"""
136136
- `router_prefix` APIs are mounted on `/...`, this
@@ -146,8 +146,8 @@ async def on_cleanup_ctx(app: web.Application) -> AsyncGenerator[None, None]:
146146
# add components to state
147147
app[APP_LONG_RUNNING_TASKS_MANAGER_KEY] = long_running_task_manager = (
148148
TasksManager(
149-
stale_task_check_interval_s=stale_task_check_interval_s,
150-
stale_task_detect_timeout_s=stale_task_detect_timeout_s,
149+
stale_task_check_interval=stale_task_check_interval,
150+
stale_task_detect_timeout=stale_task_detect_timeout,
151151
)
152152
)
153153

packages/service-library/src/servicelib/fastapi/long_running_tasks/_server.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,8 @@ def setup(
1616
app: FastAPI,
1717
*,
1818
router_prefix: str = "",
19-
stale_task_check_interval_s: datetime.timedelta = DEFAULT_STALE_TASK_CHECK_INTERVAL,
20-
stale_task_detect_timeout_s: datetime.timedelta = DEFAULT_STALE_TASK_DETECT_TIMEOUT,
19+
stale_task_check_interval: datetime.timedelta = DEFAULT_STALE_TASK_CHECK_INTERVAL,
20+
stale_task_detect_timeout: datetime.timedelta = DEFAULT_STALE_TASK_DETECT_TIMEOUT,
2121
) -> None:
2222
"""
2323
- `router_prefix` APIs are mounted on `/task/...`, this
@@ -37,8 +37,8 @@ async def on_startup() -> None:
3737

3838
# add components to state
3939
app.state.long_running_task_manager = TasksManager(
40-
stale_task_check_interval_s=stale_task_check_interval_s,
41-
stale_task_detect_timeout_s=stale_task_detect_timeout_s,
40+
stale_task_check_interval=stale_task_check_interval,
41+
stale_task_detect_timeout=stale_task_detect_timeout,
4242
)
4343

4444
async def on_shutdown() -> None:

packages/service-library/src/servicelib/long_running_tasks/models.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
from asyncio import Task
33
from collections.abc import Awaitable, Callable, Coroutine
44
from dataclasses import dataclass
5-
from datetime import datetime
5+
from datetime import UTC, datetime
66
from typing import Any, TypeAlias
77

88
from models_library.api_schemas_long_running_tasks.base import (
@@ -42,7 +42,7 @@ class TrackedTask(BaseModel):
4242
description="if True then the task will not be auto-cancelled if no one enquires of its status",
4343
)
4444

45-
started: datetime = Field(default_factory=datetime.utcnow)
45+
started: datetime = Field(default_factory=lambda: datetime.now(UTC))
4646
last_status_check: datetime | None = Field(
4747
default=None,
4848
description=(
@@ -76,10 +76,10 @@ async def result(self) -> Any:
7676

7777

7878
__all__: tuple[str, ...] = (
79-
"TaskGetWithoutHref",
8079
"ProgressMessage",
8180
"ProgressPercent",
8281
"TaskGet",
82+
"TaskGetWithoutHref",
8383
"TaskId",
8484
"TaskProgress",
8585
"TaskResult",

packages/service-library/src/servicelib/long_running_tasks/task.py

Lines changed: 12 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,7 @@
99
from typing import Any, Final, Protocol
1010
from uuid import uuid4
1111

12-
from models_library.api_schemas_long_running_tasks.base import (
13-
ProgressPercent,
14-
TaskProgress,
15-
)
12+
from models_library.api_schemas_long_running_tasks.base import TaskProgress
1613
from pydantic import PositiveFloat
1714

1815
from .errors import (
@@ -24,7 +21,7 @@
2421
)
2522
from .models import TaskId, TaskName, TaskStatus, TrackedTask
2623

27-
logger = logging.getLogger(__name__)
24+
_logger = logging.getLogger(__name__)
2825

2926
_CANCEL_TASK_TIMEOUT: Final[PositiveFloat] = datetime.timedelta(
3027
seconds=1
@@ -68,22 +65,23 @@ class TasksManager:
6865

6966
def __init__(
7067
self,
71-
stale_task_check_interval_s: datetime.timedelta,
72-
stale_task_detect_timeout_s: datetime.timedelta,
68+
stale_task_check_interval: datetime.timedelta,
69+
stale_task_detect_timeout: datetime.timedelta,
7370
):
7471
# Task groups: Every taskname maps to multiple asyncio.Task within TrackedTask model
7572
self._tasks_groups: dict[TaskName, TrackedTaskGroupDict] = {}
7673

7774
self.stale_task_check_interval_s: PositiveFloat = (
78-
stale_task_check_interval_s.total_seconds()
75+
stale_task_check_interval.total_seconds()
7976
)
8077
self.stale_task_detect_timeout_s: PositiveFloat = (
81-
stale_task_detect_timeout_s.total_seconds()
78+
stale_task_detect_timeout.total_seconds()
8279
)
8380
self._stale_tasks_monitor_task: asyncio.Task = asyncio.create_task(
8481
self._stale_tasks_monitor_worker(),
8582
name=f"{__name__}.stale_task_monitor_worker",
8683
)
84+
# TODO: add setup and teardown and also use periodic
8785

8886
def get_task_group(self, task_name: TaskName) -> TrackedTaskGroupDict:
8987
return self._tasks_groups[task_name]
@@ -126,7 +124,7 @@ async def _stale_tasks_monitor_worker(self) -> None:
126124
# - finished with a result
127125
# - finished with errors
128126
# we just print the status from where one can infer the above
129-
logger.warning(
127+
_logger.warning(
130128
"Removing stale task '%s' with status '%s'",
131129
task_id,
132130
self.get_task_status(
@@ -269,7 +267,7 @@ async def _cancel_asyncio_task(
269267
_await_task(task), timeout=_CANCEL_TASK_TIMEOUT
270268
)
271269
except TimeoutError:
272-
logger.warning(
270+
_logger.warning(
273271
"Timed out while awaiting for cancellation of '%s'", reference
274272
)
275273
except Exception: # pylint:disable=broad-except
@@ -395,11 +393,11 @@ def start_task(
395393

396394
# bind the task with progress 0 and 1
397395
async def _progress_task(progress: TaskProgress, handler: TaskProtocol):
398-
progress.update(message="starting", percent=ProgressPercent(0))
396+
progress.update(message="starting", percent=0)
399397
try:
400398
return await handler(progress, **task_kwargs)
401399
finally:
402-
progress.update(message="finished", percent=ProgressPercent(1))
400+
progress.update(message="finished", percent=1)
403401

404402
async_task = asyncio.create_task(
405403
_progress_task(task_progress, task), name=f"{task_name}"
@@ -421,9 +419,9 @@ async def _progress_task(progress: TaskProgress, handler: TaskProtocol):
421419
"TaskAlreadyRunningError",
422420
"TaskCancelledError",
423421
"TaskId",
424-
"TasksManager",
425422
"TaskProgress",
426423
"TaskProtocol",
427424
"TaskStatus",
425+
"TasksManager",
428426
"TrackedTask",
429427
)

packages/service-library/tests/long_running_tasks/test_long_running_tasks_task.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
import asyncio
88
import urllib.parse
99
from collections.abc import AsyncIterator
10-
from datetime import datetime
10+
from datetime import datetime, timedelta
1111
from typing import Any, Final
1212

1313
import pytest
@@ -71,8 +71,8 @@ async def failing_background_task(task_progress: TaskProgress):
7171
@pytest.fixture
7272
async def tasks_manager() -> AsyncIterator[TasksManager]:
7373
tasks_manager = TasksManager(
74-
stale_task_check_interval_s=TEST_CHECK_STALE_INTERVAL_S,
75-
stale_task_detect_timeout_s=TEST_CHECK_STALE_INTERVAL_S,
74+
stale_task_check_interval=timedelta(seconds=TEST_CHECK_STALE_INTERVAL_S),
75+
stale_task_detect_timeout=timedelta(seconds=TEST_CHECK_STALE_INTERVAL_S),
7676
)
7777
yield tasks_manager
7878
await tasks_manager.close()

0 commit comments

Comments
 (0)