mirror of
https://github.com/tiqi-group/pydase.git
synced 2025-06-06 13:30:41 +02:00
updates trigger_method sio event to handle async methods, as well
This commit is contained in:
parent
0d1df4f9e5
commit
c002d04328
@ -1,8 +1,11 @@
|
|||||||
import asyncio
|
import asyncio
|
||||||
|
import inspect
|
||||||
import logging
|
import logging
|
||||||
import sys
|
import sys
|
||||||
from typing import Any, TypedDict
|
from typing import Any, TypedDict
|
||||||
|
|
||||||
|
from pydase.utils.helpers import get_object_attr_from_path
|
||||||
|
|
||||||
if sys.version_info < (3, 11):
|
if sys.version_info < (3, 11):
|
||||||
from typing_extensions import NotRequired
|
from typing_extensions import NotRequired
|
||||||
else:
|
else:
|
||||||
@ -11,11 +14,11 @@ else:
|
|||||||
import click
|
import click
|
||||||
import socketio # type: ignore[import-untyped]
|
import socketio # type: ignore[import-untyped]
|
||||||
|
|
||||||
import pydase.server.web_server.api.v1.endpoints
|
|
||||||
import pydase.utils.serialization.deserializer
|
import pydase.utils.serialization.deserializer
|
||||||
import pydase.utils.serialization.serializer
|
import pydase.utils.serialization.serializer
|
||||||
from pydase.data_service.data_service_observer import DataServiceObserver
|
from pydase.data_service.data_service_observer import DataServiceObserver
|
||||||
from pydase.data_service.state_manager import StateManager
|
from pydase.data_service.state_manager import StateManager
|
||||||
|
from pydase.server.web_server.api.v1 import endpoints
|
||||||
from pydase.utils.logging import SocketIOHandler
|
from pydase.utils.logging import SocketIOHandler
|
||||||
from pydase.utils.serialization.serializer import SerializedObject
|
from pydase.utils.serialization.serializer import SerializedObject
|
||||||
|
|
||||||
@ -155,9 +158,7 @@ def setup_sio_events(sio: socketio.AsyncServer, state_manager: StateManager) ->
|
|||||||
@sio.event
|
@sio.event
|
||||||
async def update_value(sid: str, data: UpdateDict) -> SerializedObject | None:
|
async def update_value(sid: str, data: UpdateDict) -> SerializedObject | None:
|
||||||
try:
|
try:
|
||||||
pydase.server.web_server.api.v1.endpoints.update_value(
|
endpoints.update_value(state_manager=state_manager, data=data)
|
||||||
state_manager=state_manager, data=data
|
|
||||||
)
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logger.exception(e)
|
logger.exception(e)
|
||||||
return dump(e)
|
return dump(e)
|
||||||
@ -166,7 +167,7 @@ def setup_sio_events(sio: socketio.AsyncServer, state_manager: StateManager) ->
|
|||||||
@sio.event
|
@sio.event
|
||||||
async def get_value(sid: str, access_path: str) -> SerializedObject:
|
async def get_value(sid: str, access_path: str) -> SerializedObject:
|
||||||
try:
|
try:
|
||||||
return pydase.server.web_server.api.v1.endpoints.get_value(
|
return endpoints.get_value(
|
||||||
state_manager=state_manager, access_path=access_path
|
state_manager=state_manager, access_path=access_path
|
||||||
)
|
)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
@ -175,10 +176,14 @@ def setup_sio_events(sio: socketio.AsyncServer, state_manager: StateManager) ->
|
|||||||
|
|
||||||
@sio.event
|
@sio.event
|
||||||
async def trigger_method(sid: str, data: TriggerMethodDict) -> Any:
|
async def trigger_method(sid: str, data: TriggerMethodDict) -> Any:
|
||||||
|
method = get_object_attr_from_path(state_manager.service, data["access_path"])
|
||||||
|
|
||||||
try:
|
try:
|
||||||
return pydase.server.web_server.api.v1.endpoints.trigger_method(
|
if inspect.iscoroutinefunction(method):
|
||||||
state_manager=state_manager, data=data
|
return await endpoints.trigger_async_method(
|
||||||
)
|
state_manager=state_manager, data=data
|
||||||
|
)
|
||||||
|
return endpoints.trigger_method(state_manager=state_manager, data=data)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logger.error(e)
|
logger.error(e)
|
||||||
return dump(e)
|
return dump(e)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user