コード例 #1
0
ファイル: coordinator.py プロジェクト: nak/pytest_mproc
class CoordinatorFactory:
    def __init__(self, num_processes: int, host: str, port: int,
                 max_simultaneous_connections: int, as_remote_client: bool):
        """
        :param num_processes: number of parallel executions to be conducted
        :param host: host name of main node that holds the test queue, result queue, etc
        :param port: port of main node to connect to
        :param max_simultaneous_connections: maximum allowed connections at one time to main node;  throttled to
            prevent overloading *multiprocsesing* module and deadlock
        """
        self._host = host
        self._port = port
        self._num_processes = num_processes
        self._max_simultaneous_connections = max_simultaneous_connections
        self._is_local = not as_remote_client

    def launch(self) -> "Coordinator":
        if not self._is_local:
            self._sm = SyncManager(authkey=AUTHKEY)
            self._sm.start()
            coordinator = self._sm.CoordinatorProxy(
                self._num_processes, self._host, self._port,
                self._max_simultaneous_connections, self._is_local)
        else:
            coordinator = Coordinator(self._num_processes, self._host,
                                      self._port,
                                      self._max_simultaneous_connections,
                                      self._is_local)
        client = Orchestrator.Manager(addr=(self._host, self._port))
        client.register_client(coordinator, self._num_processes)
        return coordinator