Skip to content

Commit 2b16d39

Browse files
author
Andrei Neagu
committed
simplified interface
1 parent 59d92e4 commit 2b16d39

File tree

7 files changed

+18
-56
lines changed

7 files changed

+18
-56
lines changed

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

Lines changed: 2 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,13 @@
1-
from typing import Annotated, Any
1+
from typing import Any
22

33
from aiohttp import web
4-
from models_library.rest_base import RequestParameters
5-
from pydantic import BaseModel, Field
4+
from pydantic import BaseModel
65

76
from ...aiohttp import status
87
from ...long_running_tasks import lrt_api
98
from ...long_running_tasks.models import TaskGet, TaskId
109
from ..requests_validation import (
1110
parse_request_path_parameters_as,
12-
parse_request_query_parameters_as,
1311
)
1412
from ..rest_responses import create_data_response
1513
from ._manager import get_long_running_manager
@@ -69,29 +67,15 @@ async def get_task_result(request: web.Request) -> web.Response | Any:
6967
)
7068

7169

72-
class _RemoveTaskQueryParams(RequestParameters):
73-
wait_for_removal: Annotated[
74-
bool,
75-
Field(
76-
description=(
77-
"when True waits for the task to be removed "
78-
"completly instead of returning immediately"
79-
)
80-
),
81-
] = False
82-
83-
8470
@routes.delete("/{task_id}", name="remove_task")
8571
async def remove_task(request: web.Request) -> web.Response:
8672
path_params = parse_request_path_parameters_as(_PathParam, request)
87-
query_params = parse_request_query_parameters_as(_RemoveTaskQueryParams, request)
8873
long_running_manager = get_long_running_manager(request.app)
8974

9075
await lrt_api.remove_task(
9176
long_running_manager.rpc_client,
9277
long_running_manager.lrt_namespace,
9378
long_running_manager.get_task_context(request),
9479
path_params.task_id,
95-
wait_for_removal=query_params.wait_for_removal,
9680
)
9781
return web.json_response(status=status.HTTP_204_NO_CONTENT)

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

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,6 @@ async def start_long_running_task(
108108
long_running_manager.lrt_namespace,
109109
task_context,
110110
task_id,
111-
wait_for_removal=False,
112111
)
113112
raise
114113

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

Lines changed: 1 addition & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
from typing import Annotated, Any
22

3-
from fastapi import APIRouter, Depends, Query, Request, status
3+
from fastapi import APIRouter, Depends, Request, status
44

55
from ...long_running_tasks import lrt_api
66
from ...long_running_tasks.models import TaskGet, TaskId, TaskResult, TaskStatus
@@ -101,22 +101,11 @@ async def remove_task(
101101
FastAPILongRunningManager, Depends(get_long_running_manager)
102102
],
103103
task_id: TaskId,
104-
*,
105-
wait_for_removal: Annotated[
106-
bool,
107-
Query(
108-
description=(
109-
"when True waits for the task to be removed "
110-
"completly instead of returning immediately"
111-
),
112-
),
113-
] = False,
114104
) -> None:
115105
assert request # nosec
116106
await lrt_api.remove_task(
117107
long_running_manager.rpc_client,
118108
long_running_manager.lrt_namespace,
119109
long_running_manager.get_task_context(request),
120110
task_id=task_id,
121-
wait_for_removal=wait_for_removal,
122111
)

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

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,6 @@ async def remove_task(
118118
*,
119119
task_context: TaskContext,
120120
task_id: TaskId,
121-
wait_for_removal: bool,
122121
cancellation_timeout: timedelta | None,
123122
) -> None:
124123
timeout_s = (
@@ -127,17 +126,11 @@ async def remove_task(
127126
else int(cancellation_timeout.total_seconds())
128127
)
129128

130-
# NOTE: task always gets cancelled even if not waiting for it
131-
# request will return immediatlye, no need to wait so much
132-
if wait_for_removal is False:
133-
timeout_s = _RPC_TIMEOUT_SHORT_REQUESTS
134-
135129
result = await rabbitmq_rpc_client.request(
136130
get_rabbit_namespace(namespace),
137131
TypeAdapter(RPCMethodName).validate_python("remove_task"),
138132
task_context=task_context,
139133
task_id=task_id,
140-
wait_for_removal=wait_for_removal,
141134
timeout_s=timeout_s,
142135
)
143136
assert result is None # nosec

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

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -98,10 +98,7 @@ async def remove_task(
9898
*,
9999
task_context: TaskContext,
100100
task_id: TaskId,
101-
wait_for_removal: bool,
102101
) -> None:
103102
await long_running_manager.tasks_manager.remove_task(
104-
task_id,
105-
with_task_context=task_context,
106-
wait_for_removal=wait_for_removal,
103+
task_id, with_task_context=task_context, wait_for_removal=False
107104
)

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

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,6 @@ async def remove_task(
104104
task_context: TaskContext,
105105
task_id: TaskId,
106106
*,
107-
wait_for_removal: bool,
108107
cancellation_timeout: timedelta | None = None,
109108
) -> None:
110109
"""cancels and removes a task
@@ -116,6 +115,5 @@ async def remove_task(
116115
lrt_namespace,
117116
task_id=task_id,
118117
task_context=task_context,
119-
wait_for_removal=wait_for_removal,
120118
cancellation_timeout=cancellation_timeout,
121119
)

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

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
# pylint: disable=protected-access
12
# pylint: disable=redefined-outer-name
23
# pylint: disable=unused-argument
34

@@ -161,18 +162,19 @@ async def _assert_list_tasks_from_all_managers(
161162

162163

163164
async def _assert_task_is_no_longer_present(
164-
rabbitmq_rpc_client: RabbitMQRPCClient,
165165
long_running_managers: list[LongRunningManager],
166166
task_context: TaskContext,
167167
task_id: TaskId,
168168
) -> None:
169-
with pytest.raises(TaskNotFoundError):
170-
await lrt_api.get_task_status(
171-
rabbitmq_rpc_client,
172-
_get_long_running_manager(long_running_managers).lrt_namespace,
173-
task_context,
174-
task_id,
175-
)
169+
manager = _get_long_running_manager(long_running_managers)
170+
async for attempt in AsyncRetrying(**_RETRY_PARAMS):
171+
with attempt: # noqa: SIM117
172+
with pytest.raises(TaskNotFoundError): # noqa: PT012
173+
# use internals to detirmine when it's no longer here
174+
await manager._tasks_manager._get_tracked_task( # noqa: SLF001
175+
task_id, task_context
176+
)
177+
raise TryAgain
176178

177179

178180
_TASK_CONTEXT: Final[list[TaskContext | None]] = [{"a": "context"}, None]
@@ -234,7 +236,7 @@ async def test_workflow_with_result(
234236
assert result == to_return
235237

236238
await _assert_task_is_no_longer_present(
237-
rabbitmq_rpc_client, long_running_managers, saved_context, task_id
239+
long_running_managers, saved_context, task_id
238240
)
239241

240242

@@ -289,13 +291,14 @@ async def test_workflow_raises_error(
289291
)
290292

291293
await _assert_task_is_no_longer_present(
292-
rabbitmq_rpc_client, long_running_managers, saved_context, task_id
294+
long_running_managers, saved_context, task_id
293295
)
294296

295297

296298
@pytest.mark.parametrize("task_context", _TASK_CONTEXT)
297299
@pytest.mark.parametrize("is_unique", _IS_UNIQUE)
298300
async def test_remove_task(
301+
disable_stale_tasks_monitor: None,
299302
long_running_managers: list[LongRunningManager],
300303
rabbitmq_rpc_client: RabbitMQRPCClient,
301304
is_unique: bool,
@@ -321,9 +324,8 @@ async def test_remove_task(
321324
_get_long_running_manager(long_running_managers).lrt_namespace,
322325
saved_context,
323326
task_id,
324-
wait_for_removal=True,
325327
)
326328

327329
await _assert_task_is_no_longer_present(
328-
rabbitmq_rpc_client, long_running_managers, saved_context, task_id
330+
long_running_managers, saved_context, task_id
329331
)

0 commit comments

Comments
 (0)