예제 #1
0
 def __init__(self, channelManager):
     self.channelManager = channelManager
     self.rateLimitedChannelGroup = (
         StringChannelNative.createRateLimitedStringChannelGroup(
             self.channelManager.callbackScheduler,
             self.channelManager.perMachineThroughput
             )
         )
예제 #2
0
 def __init__(self, channelManager):
     self.channelManager = channelManager
     self.rateLimitedChannelGroup = (
         StringChannelNative.createRateLimitedStringChannelGroup(
             self.channelManager.callbackScheduler,
             self.channelManager.perMachineThroughput
             )
         )
    def addWorker(self):
        self.workerCount += 1

        newMachineId = self.allocateMachineId()

        self.machineIds.append(newMachineId)

        self.workersVdmsAndEventHandlers.append(
            createWorker_(
                newMachineId,
                self.sharedStateViewFactory,
                memoryLimitMb = self.memoryPerWorkerMB,
                threadCount=self.threadsPerWorker,
                callbackSchedulerToUse = self.callbackScheduler,
                cacheFunction = self.cacheFunction,
                pageSizeOverride = self.pageSizeOverride,
                disableEventHandler = self.disableEventHandler
                )
            )

        if self.channelThroughputMBPerSecond is not None:
            self.rateLimitedChannelGroupsForEachListener.append(
                StringChannelNative.createRateLimitedStringChannelGroup(
                    self.callbackScheduler,
                    int(self.channelThroughputMBPerSecond * 1024 * 1024 * (.5 + random.random()))
                    )
                )

        self.workersVdmsAndEventHandlers[-1][0].startComputations()

        for ix1 in range(len(self.workersVdmsAndEventHandlers)-1):
            ix2 = len(self.workersVdmsAndEventHandlers)-1
            self.wireWorkersTogether_(ix1, ix2)

        for ix1 in range(len(self.clientsAndVdms)):
            ix2 = len(self.workersVdmsAndEventHandlers)-1
            self.wireWorkerToClient_(ix2, ix1)

        s3InterfaceFactory = self.s3Service.withMachine(self.machineIdsEverAllocated - 1)

        worker, workerVdm, _ = self.workersVdmsAndEventHandlers[-1]

        loadingService = PythonIoTaskService.PythonIoTaskService(
            s3InterfaceFactory,
            self.objectStore,
            workerVdm,
            worker.getExternalDatasetRequestChannel(self.callbackScheduler)
                .makeQueuelike(self.callbackScheduler),
            threadCount=self.ioTaskThreadOverride,
            maxObjectStoreAttempts=1,
            objectStoreFailureInterval=0
            )

        loadingService.startService()

        self.loadingServices.append(loadingService)

        self.workerTeardownGates.append(workerVdm.getVdmmTeardownGate())
예제 #4
0
    def registerChannelListener(self, address, port, connectionCallback):
        with self.lock:
            assert (address, port) not in self.listeners

            key = (str(address), int(port))

            self.listeners[key] = connectionCallback
            self.rateLimitedChannelGroupsForEachListener[key] = (
                StringChannelNative.createRateLimitedStringChannelGroup(
                    self.callbackScheduler, self.perMachineThroughput))
예제 #5
0
    def registerChannelListener(self, address, port, connectionCallback):
        with self.lock:
            assert (address, port) not in self.listeners

            key = (str(address), int(port))

            self.listeners[key] = connectionCallback
            self.rateLimitedChannelGroupsForEachListener[key] = (
                StringChannelNative.createRateLimitedStringChannelGroup(
                    self.callbackScheduler,
                    self.perMachineThroughput
                    )
                )