'Run a given service.
:param callback: callback that will start the required service
:param workers: number of service workers
:returns: list of spawned workers\' pids'

def _start_server(self, callback, workers):

    self.workers = workers
    pid = os.fork()
    if (pid == 0):
        status = 0
        try:
            callback(workers)
        except SystemExit as exc:
            status = exc.code
        except BaseException:
            traceback.print_exc()
            status = 2
        os._exit(status)
    self.service_pid = pid
    if (self.workers > 1):
        condition = (lambda : (self.workers == len(self._get_workers())))
        utils.wait_until_true(condition, timeout=10, sleep=0.1, exception=RuntimeError(('Failed    to    start    %d    workers.' % self.workers)))
        workers = self._get_workers()
        self.assertEqual(len(workers), self.workers)
        return workers
    utils.wait_until_true(self.health_checker, timeout=10, sleep=0.1, exception=RuntimeError('Failed    to    start    service.'))
    return [self.service_pid]
