Skip to content

Commit 17b79c9

Browse files
committed
call long running tasks module directly
1 parent 2d0ae68 commit 17b79c9

File tree

3 files changed

+28
-22
lines changed

3 files changed

+28
-22
lines changed

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

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
The server only has to return a `TaskId` in the handler creating the long
66
running task.
77
"""
8+
89
from ...long_running_tasks._errors import TaskAlreadyRunningError, TaskCancelledError
910
from ...long_running_tasks._models import ProgressMessage, ProgressPercent
1011
from ...long_running_tasks._task import (
@@ -14,12 +15,17 @@
1415
TasksManager,
1516
TaskStatus,
1617
)
17-
from ._dependencies import create_task_name_from_request, get_tasks_manager
18+
from ._dependencies import (
19+
create_task_name_from_request,
20+
get_task_context,
21+
get_tasks_manager,
22+
)
1823
from ._routes import TaskGet
1924
from ._server import setup, start_long_running_task
2025

2126
__all__: tuple[str, ...] = (
2227
"create_task_name_from_request",
28+
"get_task_context",
2329
"get_tasks_manager",
2430
"ProgressMessage",
2531
"ProgressPercent",

services/web/server/src/simcore_service_webserver/long_running_tasks.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
from .models import RequestContext
1414

1515

16-
def _webserver_request_context_decorator(handler: Handler):
16+
def webserver_request_context_decorator(handler: Handler):
1717
@wraps(handler)
1818
async def _test_task_context_decorator(
1919
request: web.Request,
@@ -31,5 +31,5 @@ def setup_long_running_tasks(app: web.Application) -> None:
3131
app,
3232
router_prefix=f"/{API_VTAG}/tasks-legacy",
3333
handler_check_decorator=login_required,
34-
task_request_context_decorator=_webserver_request_context_decorator,
34+
task_request_context_decorator=webserver_request_context_decorator,
3535
)

services/web/server/src/simcore_service_webserver/tasks/_rest.py

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -19,10 +19,12 @@
1919
AsyncJobNameData,
2020
)
2121
from models_library.api_schemas_storage import STORAGE_RPC_NAMESPACE
22-
from models_library.generics import Envelope
2322
from pydantic import BaseModel
2423
from servicelib.aiohttp import status
25-
from servicelib.aiohttp.client_session import get_client_session
24+
from servicelib.aiohttp.long_running_tasks.server import (
25+
get_task_context,
26+
get_tasks_manager,
27+
)
2628
from servicelib.aiohttp.requests_validation import (
2729
parse_request_path_parameters_as,
2830
)
@@ -31,6 +33,7 @@
3133

3234
from .._meta import API_VTAG
3335
from ..login.decorators import login_required
36+
from ..long_running_tasks import webserver_request_context_decorator
3437
from ..models import RequestContext
3538
from ..rabbitmq import get_rabbitmq_rpc_client
3639
from ..security.decorators import permission_required
@@ -51,23 +54,11 @@
5154
@login_required
5255
@permission_required("storage.files.*")
5356
@handle_export_data_exceptions
57+
@webserver_request_context_decorator
5458
async def get_async_jobs(request: web.Request) -> web.Response:
55-
session = get_client_session(request.app)
56-
async with session.request(
57-
"GET",
58-
request.url.with_path(str(request.app.router["list_tasks"].url_for())),
59-
cookies=request.cookies,
60-
) as resp:
61-
if resp.status != status.HTTP_200_OK:
62-
return web.Response(
63-
status=resp.status,
64-
body=await resp.read(),
65-
content_type=resp.content_type,
66-
)
67-
inprocess_tasks = (
68-
Envelope[list[TaskGet]].model_validate_json(await resp.text()).data
69-
)
70-
assert inprocess_tasks is not None # nosec
59+
inprocess_task_manager = get_tasks_manager(request.app)
60+
inprocess_task_context = get_task_context(request)
61+
inprocess_tracked_tasks = inprocess_task_manager.list_tasks(inprocess_task_context)
7162

7263
_req_ctx = RequestContext.model_validate(request)
7364

@@ -92,7 +83,16 @@ async def get_async_jobs(request: web.Request) -> web.Response:
9283
)
9384
for job in user_async_jobs
9485
]
95-
+ inprocess_tasks,
86+
+ [
87+
TaskGet(
88+
task_id=f"{task.task_id}",
89+
task_name=task.task_name,
90+
status_href=f"{request.app.router['get_task_status'].url_for(task_id=task.task_id)}",
91+
abort_href=f"{request.app.router['cancel_and_delete_task'].url_for(task_id=task.task_id)}",
92+
result_href=f"{request.app.router['get_task_result'].url_for(task_id=task.task_id)}",
93+
)
94+
for task in inprocess_tracked_tasks
95+
],
9696
status=status.HTTP_200_OK,
9797
)
9898

0 commit comments

Comments
 (0)