diff --git a/src/pydase/server/server.py b/src/pydase/server/server.py index bbbebe2..a29462c 100644 --- a/src/pydase/server/server.py +++ b/src/pydase/server/server.py @@ -78,71 +78,67 @@ class Server: Args: service: DataService - The DataService instance that this server will manage. + The DataService instance that this server will manage. host: str - The host address for the server. Default is '0.0.0.0', which means all - available network interfaces. - rpc_port: int - The port number for the RPC server. Default is - `pydase.config.ServiceConfig().rpc_port`. + The host address for the server. Default is '0.0.0.0', which means all + available network interfaces. web_port: int - The port number for the web server. Default is - `pydase.config.ServiceConfig().web_port`. - enable_rpc: bool - Whether to enable the RPC server. Default is True. + The port number for the web server. Default is + `pydase.config.ServiceConfig().web_port`. enable_web: bool - Whether to enable the web server. Default is True. + Whether to enable the web server. Default is True. filename: str | Path | None - Filename of the file managing the service state persistence. Defaults to None. - use_forking_server: bool - Whether to use ForkingServer for multiprocessing. Default is False. + Filename of the file managing the service state persistence. + Defaults to None. additional_servers : list[AdditionalServer] - A list of additional servers to run alongside the main server. Each entry in - the list should be a dictionary with the following structure: - - server: A class that adheres to the AdditionalServerProtocol. This class - should have an `__init__` method that accepts the DataService instance, - port, host, and optional keyword arguments, and a `serve` method that is - a coroutine responsible for starting the server. - - port: The port on which the additional server will be running. - - kwargs: A dictionary containing additional keyword arguments that will be - passed to the server's `__init__` method. + A list of additional servers to run alongside the main server. Each entry in + the list should be a dictionary with the following structure: + - server: A class that adheres to the AdditionalServerProtocol. This + class should have an `__init__` method that accepts the DataService + instance, port, host, and optional keyword arguments, and a `serve` + method that is a coroutine responsible for starting the server. + - port: The port on which the additional server will be running. + - kwargs: A dictionary containing additional keyword arguments that will + be passed to the server's `__init__` method. - Here's an example of how you might define an additional server: + Here's an example of how you might define an additional server: + ```python + class MyCustomServer: + def __init__( + self, + data_service_observer: DataServiceObserver, + host: str, + port: int, + **kwargs: Any, + ) -> None: + self.observer = data_service_observer + self.state_manager = self.observer.state_manager + self.service = self.state_manager.service + self.port = port + self.host = host + # handle any additional arguments... - >>> class MyCustomServer: - ... def __init__( - ... self, - ... data_service_observer: DataServiceObserver, - ... host: str, - ... port: int, - ... **kwargs: Any, - ... ) -> None: - ... self.observer = data_service_observer - ... self.state_manager = self.observer.state_manager - ... self.service = self.state_manager.service - ... self.port = port - ... self.host = host - ... # handle any additional arguments... - ... - ... async def serve(self): - ... # code to start the server... + async def serve(self): + # code to start the server... + ``` - And here's how you might add it to the `additional_servers` list when creating - a `Server` instance: - - >>> server = Server( - ... service=my_data_service, - ... additional_servers=[ - ... { - ... "server": MyCustomServer, - ... "port": 12345, - ... "kwargs": {"some_arg": "some_value"} - ... } - ... ], - ... ) - ... server.run() + And here's how you might add it to the `additional_servers` list when + creating a `Server` instance: + ```python + server = Server( + service=my_data_service, + additional_servers=[ + { + "server": MyCustomServer, + "port": 12345, + "kwargs": {"some_arg": "some_value"} + } + ], + ) + server.run() + ``` **kwargs: Any Additional keyword arguments. """