def _build_preparation_loop(self):
        while True:
            build = self._request_queue.get()
            project_id = build.project_type.project_id()

            if project_id not in self._project_preparation_locks:
                self._logger.info('Creating project lock [{}] for build {}', project_id, str(build.build_id()))
                self._project_preparation_locks[project_id] = Lock()

            project_lock = self._project_preparation_locks[project_id]
            SafeThread(
                target=self._prepare_build_async,
                name='Bld{}-PreparationThread'.format(build.build_id()),
                args=(build, project_lock)
            ).start()
Grabs a build off the request_queue (populated by self.handle_build_request()), prepares it,
dataset/ETHPy150Open box/ClusterRunner/app/master/build_request_handler.py/BuildRequestHandler._build_preparation_loop