File tree Expand file tree Collapse file tree 2 files changed +38
-0
lines changed
services/storage/src/simcore_service_storage/api/_worker_tasks Expand file tree Collapse file tree 2 files changed +38
-0
lines changed Original file line number Diff line number Diff line change 1+ import logging
2+
3+ from celery import Task # type: ignore[import-untyped]
4+ from models_library .api_schemas_storage .storage_schemas import (
5+ ETag ,
6+ FileUploadCompletionBody ,
7+ )
8+ from models_library .projects_nodes_io import LocationID , StorageFileID
9+ from models_library .users import UserID
10+ from servicelib .logging_utils import log_context
11+
12+ from ...dsm import get_dsm_provider
13+ from ...modules .celery .utils import get_fastapi_app
14+
15+ _logger = logging .getLogger (__name__ )
16+
17+
18+ async def complete_upload_file (
19+ task : Task ,
20+ user_id : UserID ,
21+ location_id : LocationID ,
22+ file_id : StorageFileID ,
23+ body : FileUploadCompletionBody ,
24+ ) -> ETag | None :
25+ with log_context (
26+ _logger ,
27+ logging .INFO ,
28+ msg = f"completing upload of file { user_id = } , { location_id = } , { file_id = } " ,
29+ ):
30+ dsm = get_dsm_provider (get_fastapi_app (task .app )).get (location_id )
31+ # NOTE: completing a multipart upload on AWS can take up to several minutes
32+ # if it returns slow we return a 202 - Accepted, the client will have to check later
33+ # for completeness
34+ file_meta_data = await dsm .complete_file_upload (file_id , user_id , body .parts )
35+
36+ return file_meta_data .entity_tag
Original file line number Diff line number Diff line change 66from ...modules .celery ._celery_types import register_celery_types
77from ...modules .celery ._task import define_task
88from ...modules .celery .tasks import export_data
9+ from ._files import complete_upload_file
910from ._paths import compute_path_size
1011
1112_logger = logging .getLogger (__name__ )
@@ -20,3 +21,4 @@ def setup_worker_tasks(app: Celery) -> None:
2021 ):
2122 define_task (app , export_data )
2223 define_task (app , compute_path_size )
24+ define_task (app , complete_upload_file )
You can’t perform that action at this time.
0 commit comments