Esempio n. 1
0
    def start(self):
        '''
        Spawn a server process for this manager object
        '''
        assert not self._started
        self._started = True

        self._registry, _ = BaseManager._getRegistryCreators(self)

        # pipe over which we will retreive address of server
        reader, writer = Pipe(duplex=False)

        # spawn process which runs a server
        self._process = Process(
            target=self._runServer,
            args=(self._registry, self._address, self._authkey, writer),
        )
        ident = ':'.join(map(str, self._process._identity))
        self._process.setName(type(self).__name__ + '-' + ident)
        self._process.setAuthKey(self._authkey)
        self._process.start()

        # get address of server
        writer.close()
        self._address = reader.recv()
        reader.close()

        # register a finalizer
        self.shutdown = Finalize(self,
                                 BaseManager._finalizeManager,
                                 args=(self._process, self._address,
                                       self._authkey),
                                 exitpriority=0)