11import logging
2- from typing import Literal
2+ from typing import Annotated , Literal
33
44from models_library .api_schemas_webserver import WEBSERVER_RPC_NAMESPACE
55from models_library .api_schemas_webserver .functions import (
3232from models_library .rest_ordering import OrderBy
3333from models_library .rest_pagination import PageMetaInfoLimitOffset
3434from models_library .users import UserID
35- from pydantic import TypeAdapter
35+ from pydantic import PositiveInt , TypeAdapter
3636
3737from .....logging_utils import log_decorator
3838from .... import RabbitMQRPCClient
3939
4040_logger = logging .getLogger (__name__ )
4141
42+ _FUNCTION_RPC_TIMEOUT_SEC : Annotated [int , PositiveInt ] = 30
43+
4244
4345@log_decorator (_logger , level = logging .DEBUG )
4446async def register_function (
@@ -54,6 +56,7 @@ async def register_function(
5456 function = function ,
5557 user_id = user_id ,
5658 product_name = product_name ,
59+ timeout_s = _FUNCTION_RPC_TIMEOUT_SEC ,
5760 )
5861 return TypeAdapter (RegisteredFunction ).validate_python (
5962 result
@@ -74,6 +77,7 @@ async def get_function(
7477 function_id = function_id ,
7578 user_id = user_id ,
7679 product_name = product_name ,
80+ timeout_s = _FUNCTION_RPC_TIMEOUT_SEC ,
7781 )
7882 return TypeAdapter (RegisteredFunction ).validate_python (result )
7983
@@ -92,6 +96,7 @@ async def get_function_input_schema(
9296 function_id = function_id ,
9397 user_id = user_id ,
9498 product_name = product_name ,
99+ timeout_s = _FUNCTION_RPC_TIMEOUT_SEC ,
95100 )
96101 return TypeAdapter (FunctionInputSchema ).validate_python (result )
97102
@@ -110,6 +115,7 @@ async def get_function_output_schema(
110115 function_id = function_id ,
111116 user_id = user_id ,
112117 product_name = product_name ,
118+ timeout_s = _FUNCTION_RPC_TIMEOUT_SEC ,
113119 )
114120 return TypeAdapter (FunctionOutputSchema ).validate_python (result )
115121
@@ -128,6 +134,7 @@ async def delete_function(
128134 function_id = function_id ,
129135 user_id = user_id ,
130136 product_name = product_name ,
137+ timeout_s = _FUNCTION_RPC_TIMEOUT_SEC ,
131138 )
132139 assert result is None # nosec
133140 return result
@@ -158,6 +165,7 @@ async def list_functions(
158165 filter_by_function_class = filter_by_function_class ,
159166 search_by_function_title = search_by_function_title ,
160167 search_by_multi_columns = search_by_multi_columns ,
168+ timeout_s = _FUNCTION_RPC_TIMEOUT_SEC ,
161169 )
162170 )
163171 return TypeAdapter (
@@ -188,6 +196,7 @@ async def list_function_jobs(
188196 filter_by_function_id = filter_by_function_id ,
189197 filter_by_function_job_ids = filter_by_function_job_ids ,
190198 filter_by_function_job_collection_id = filter_by_function_job_collection_id ,
199+ timeout_s = _FUNCTION_RPC_TIMEOUT_SEC ,
191200 )
192201 )
193202 return TypeAdapter (
@@ -220,6 +229,7 @@ async def list_function_jobs_with_status(
220229 filter_by_function_id = filter_by_function_id ,
221230 filter_by_function_job_ids = filter_by_function_job_ids ,
222231 filter_by_function_job_collection_id = filter_by_function_job_collection_id ,
232+ timeout_s = _FUNCTION_RPC_TIMEOUT_SEC ,
223233 )
224234 return TypeAdapter (
225235 tuple [
@@ -247,6 +257,7 @@ async def list_function_job_collections(
247257 filters = filters ,
248258 user_id = user_id ,
249259 product_name = product_name ,
260+ timeout_s = _FUNCTION_RPC_TIMEOUT_SEC ,
250261 )
251262 return TypeAdapter (
252263 tuple [list [RegisteredFunctionJobCollection ], PageMetaInfoLimitOffset ]
@@ -269,6 +280,7 @@ async def update_function_title(
269280 title = title ,
270281 user_id = user_id ,
271282 product_name = product_name ,
283+ timeout_s = _FUNCTION_RPC_TIMEOUT_SEC ,
272284 )
273285 return TypeAdapter (RegisteredFunction ).validate_python (result )
274286
@@ -289,6 +301,7 @@ async def update_function_description(
289301 description = description ,
290302 user_id = user_id ,
291303 product_name = product_name ,
304+ timeout_s = _FUNCTION_RPC_TIMEOUT_SEC ,
292305 )
293306 return TypeAdapter (RegisteredFunction ).validate_python (result )
294307
@@ -309,6 +322,7 @@ async def run_function(
309322 inputs = inputs ,
310323 user_id = user_id ,
311324 product_name = product_name ,
325+ timeout_s = _FUNCTION_RPC_TIMEOUT_SEC ,
312326 )
313327 return TypeAdapter (RegisteredFunctionJob ).validate_python (
314328 result
@@ -329,6 +343,7 @@ async def register_function_job(
329343 function_job = function_job ,
330344 user_id = user_id ,
331345 product_name = product_name ,
346+ timeout_s = _FUNCTION_RPC_TIMEOUT_SEC ,
332347 )
333348 return TypeAdapter (RegisteredFunctionJob ).validate_python (
334349 result
@@ -351,6 +366,7 @@ async def patch_registered_function_job(
351366 product_name = product_name ,
352367 function_job_uuid = function_job_uuid ,
353368 registered_function_job_patch = registered_function_job_patch ,
369+ timeout_s = _FUNCTION_RPC_TIMEOUT_SEC ,
354370 )
355371 return TypeAdapter (RegisteredFunctionJob ).validate_python (
356372 result
@@ -371,6 +387,7 @@ async def get_function_job(
371387 function_job_id = function_job_id ,
372388 user_id = user_id ,
373389 product_name = product_name ,
390+ timeout_s = _FUNCTION_RPC_TIMEOUT_SEC ,
374391 )
375392
376393 return TypeAdapter (RegisteredFunctionJob ).validate_python (result )
@@ -390,6 +407,7 @@ async def get_function_job_status(
390407 function_job_id = function_job_id ,
391408 user_id = user_id ,
392409 product_name = product_name ,
410+ timeout_s = _FUNCTION_RPC_TIMEOUT_SEC ,
393411 )
394412 return TypeAdapter (FunctionJobStatus ).validate_python (result )
395413
@@ -408,6 +426,7 @@ async def get_function_job_outputs(
408426 function_job_id = function_job_id ,
409427 user_id = user_id ,
410428 product_name = product_name ,
429+ timeout_s = _FUNCTION_RPC_TIMEOUT_SEC ,
411430 )
412431 return TypeAdapter (FunctionOutputs ).validate_python (result )
413432
@@ -430,6 +449,7 @@ async def update_function_job_status(
430449 user_id = user_id ,
431450 product_name = product_name ,
432451 check_write_permissions = check_write_permissions ,
452+ timeout_s = _FUNCTION_RPC_TIMEOUT_SEC ,
433453 )
434454 return TypeAdapter (FunctionJobStatus ).validate_python (result )
435455
@@ -452,6 +472,7 @@ async def update_function_job_outputs(
452472 user_id = user_id ,
453473 product_name = product_name ,
454474 check_write_permissions = check_write_permissions ,
475+ timeout_s = _FUNCTION_RPC_TIMEOUT_SEC ,
455476 )
456477 return TypeAdapter (FunctionOutputs ).validate_python (result )
457478
@@ -470,6 +491,7 @@ async def delete_function_job(
470491 function_job_id = function_job_id ,
471492 user_id = user_id ,
472493 product_name = product_name ,
494+ timeout_s = _FUNCTION_RPC_TIMEOUT_SEC ,
473495 )
474496 assert result is None # nosec
475497
@@ -490,6 +512,7 @@ async def find_cached_function_jobs(
490512 inputs = inputs ,
491513 user_id = user_id ,
492514 product_name = product_name ,
515+ timeout_s = _FUNCTION_RPC_TIMEOUT_SEC ,
493516 )
494517 if result is None :
495518 return None
@@ -510,6 +533,7 @@ async def register_function_job_collection(
510533 function_job_collection = function_job_collection ,
511534 user_id = user_id ,
512535 product_name = product_name ,
536+ timeout_s = _FUNCTION_RPC_TIMEOUT_SEC ,
513537 )
514538 return TypeAdapter (RegisteredFunctionJobCollection ).validate_python (result )
515539
@@ -528,6 +552,7 @@ async def get_function_job_collection(
528552 function_job_collection_id = function_job_collection_id ,
529553 user_id = user_id ,
530554 product_name = product_name ,
555+ timeout_s = _FUNCTION_RPC_TIMEOUT_SEC ,
531556 )
532557 return TypeAdapter (RegisteredFunctionJobCollection ).validate_python (result )
533558
@@ -546,6 +571,7 @@ async def delete_function_job_collection(
546571 function_job_collection_id = function_job_collection_id ,
547572 user_id = user_id ,
548573 product_name = product_name ,
574+ timeout_s = _FUNCTION_RPC_TIMEOUT_SEC ,
549575 )
550576 assert result is None # nosec
551577
@@ -564,6 +590,7 @@ async def get_function_user_permissions(
564590 function_id = function_id ,
565591 user_id = user_id ,
566592 product_name = product_name ,
593+ timeout_s = _FUNCTION_RPC_TIMEOUT_SEC ,
567594 )
568595 return TypeAdapter (FunctionUserAccessRights ).validate_python (result )
569596
@@ -582,6 +609,7 @@ async def get_functions_user_api_access_rights(
582609 ),
583610 user_id = user_id ,
584611 product_name = product_name ,
612+ timeout_s = _FUNCTION_RPC_TIMEOUT_SEC ,
585613 )
586614 return TypeAdapter (FunctionUserApiAccessRights ).validate_python (result )
587615
@@ -614,6 +642,7 @@ async def set_group_permissions(
614642 read = read ,
615643 write = write ,
616644 execute = execute ,
645+ timeout_s = _FUNCTION_RPC_TIMEOUT_SEC ,
617646 )
618647 return TypeAdapter (
619648 list [tuple [FunctionID | FunctionJobID , FunctionGroupAccessRights ]]
0 commit comments