@dataclass
class ServerConfig(DataclassParserValidatorMixin):
hostname: Optional[str] = None
- instances: Union[Literal["auto"], int] = 1
- instances_num: int = 1
+ instances: Union[Literal["auto"], int, None] = None
+ _instances: int = 1
use_cache_gc: bool = True
def __post_init__(self):
if isinstance(self.instances, int):
- self.instances_num = self.instances
+ self._instances = self.instances
elif self.instances == "auto":
cpu_count = os.cpu_count()
if cpu_count is not None:
- self.instances_num = cpu_count
+ self._instances = cpu_count
else:
# TODO: do better logging
- print("cannot get number of CPUs")
+ print("cannot find number of system available CPUs")
+
+ def get_instances(self) -> int:
+ return self._instances
def _validate(self):
- if not 0 < self.instances_num <= 256:
+ if not 0 < self._instances <= 256:
raise DataValidationError("number of kresd instances must be in range 1..256")
async def apply_config(self, config: KresConfig):
async with self._children_lock:
await self._write_config(config)
- await self._ensure_number_of_children(config.server.instances_num)
+ await self._ensure_number_of_children(config.server.get_instances())
await self._rolling_restart()