mirror of
https://github.com/tiqi-group/pydase.git
synced 2025-04-22 09:10:01 +02:00
Removes state manager from all service instances that have no filename set or are not exposed
This commit is contained in:
parent
49070a7f38
commit
f852dea9e5
@ -14,6 +14,6 @@ class AbstractDataService(ABC):
|
|||||||
__root__: DataService
|
__root__: DataService
|
||||||
_task_manager: TaskManager
|
_task_manager: TaskManager
|
||||||
_callback_manager: CallbackManager
|
_callback_manager: CallbackManager
|
||||||
_state_manager: StateManager
|
_state_manager: Optional[StateManager]
|
||||||
_autostart_tasks: dict[str, tuple[Any]]
|
_autostart_tasks: dict[str, tuple[Any]]
|
||||||
_filename: Optional[str]
|
_filename: Optional[str]
|
||||||
|
@ -43,7 +43,7 @@ class DataService(rpyc.Service, AbstractDataService):
|
|||||||
self._filename: Optional[str] = filename
|
self._filename: Optional[str] = filename
|
||||||
self._callback_manager: CallbackManager = CallbackManager(self)
|
self._callback_manager: CallbackManager = CallbackManager(self)
|
||||||
self._task_manager = TaskManager(self)
|
self._task_manager = TaskManager(self)
|
||||||
self._state_manager = StateManager(self)
|
self._state_manager: Optional[StateManager] = None
|
||||||
|
|
||||||
if not hasattr(self, "_autostart_tasks"):
|
if not hasattr(self, "_autostart_tasks"):
|
||||||
self._autostart_tasks = {}
|
self._autostart_tasks = {}
|
||||||
@ -56,7 +56,9 @@ class DataService(rpyc.Service, AbstractDataService):
|
|||||||
self.__check_instance_classes()
|
self.__check_instance_classes()
|
||||||
self._initialised = True
|
self._initialised = True
|
||||||
|
|
||||||
self._state_manager.load_state()
|
if self._filename is not None:
|
||||||
|
self._state_manager = StateManager(self)
|
||||||
|
self._state_manager.load_state()
|
||||||
|
|
||||||
def __setattr__(self, __name: str, __value: Any) -> None:
|
def __setattr__(self, __name: str, __value: Any) -> None:
|
||||||
# converting attributes that are not properties
|
# converting attributes that are not properties
|
||||||
|
@ -17,6 +17,7 @@ from uvicorn.server import HANDLED_SIGNALS
|
|||||||
|
|
||||||
import pydase.units as u
|
import pydase.units as u
|
||||||
from pydase import DataService
|
from pydase import DataService
|
||||||
|
from pydase.data_service.state_manager import StateManager
|
||||||
from pydase.version import __version__
|
from pydase.version import __version__
|
||||||
|
|
||||||
from .web_server import WebAPI
|
from .web_server import WebAPI
|
||||||
@ -163,6 +164,9 @@ class Server:
|
|||||||
**kwargs: Any,
|
**kwargs: Any,
|
||||||
) -> None:
|
) -> None:
|
||||||
self._service = service
|
self._service = service
|
||||||
|
if self._service._state_manager is None:
|
||||||
|
self._service._state_manager = StateManager(self._service)
|
||||||
|
self._service._state_manager.load_state()
|
||||||
self._host = host
|
self._host = host
|
||||||
self._rpc_port = rpc_port
|
self._rpc_port = rpc_port
|
||||||
self._web_port = web_port
|
self._web_port = web_port
|
||||||
|
@ -114,13 +114,17 @@ class WebAPI:
|
|||||||
|
|
||||||
@app.get("/service-properties")
|
@app.get("/service-properties")
|
||||||
def service_properties() -> dict[str, Any]:
|
def service_properties() -> dict[str, Any]:
|
||||||
return self.service._state_manager.cache
|
if self.service._state_manager is not None:
|
||||||
|
return self.service._state_manager.cache
|
||||||
|
else:
|
||||||
|
logger.error("Exposed service does not have a state manager.")
|
||||||
|
return {}
|
||||||
|
|
||||||
# exposing custom.css file provided by user
|
# exposing custom.css file provided by user
|
||||||
if self.css is not None:
|
if self.css is not None:
|
||||||
|
|
||||||
@app.get("/custom.css")
|
@app.get("/custom.css")
|
||||||
async def styles():
|
async def styles() -> FileResponse:
|
||||||
return FileResponse(str(self.css))
|
return FileResponse(str(self.css))
|
||||||
|
|
||||||
app.mount(
|
app.mount(
|
||||||
|
Loading…
x
Reference in New Issue
Block a user