Commit 0f95798b authored by Kento HASEGAWA's avatar Kento HASEGAWA
Browse files

Make it possible to select merge solvers to use

parent bffa7d2f
Loading
Loading
Loading
Loading
+17 −7
Changes for roles/host.py: 17 added lines, 7 removed lines.
Original line number Diff line number Diff line
@@ -57,15 +57,20 @@ class Host(object):
            return {'status': 'key error'}
        else:
            # request = Request(self.worker_manager, problem.get_dict(), solvers=solvers)
            if solvers is None:
                _solvers = self.worker_manager.get_workers()
            else:
            merge_solvers = list()
            # if solvers is None:
            #     _solvers = self.worker_manager.get_workers()
            # else:
            _solvers = dict()
            for k, v in self.worker_manager.get_workers().items():
                    if k in solvers:
                if (solvers is None) or (k in solvers):
                    if v.role == 'merge_solver':
                        merge_solvers.append(k)
                    else:
                        _solvers[k] = v

            for _, v in _solvers.items():
                request = Request(self.worker_manager, problem.get_dict(), v)
                request = Request(self.worker_manager, problem.get_dict(), v, merge_solvers=merge_solvers)
                request.broadcast()

                request_id = request.get_id()
@@ -110,7 +115,10 @@ class Host(object):
                merge_problem['request_id'] = solution['request_id']
                merge_problem['timeout'] = 10000
                for k, v in self.worker_manager.workers.items():
                    if v.role == 'merge_solver':
                    if ('merge_solvers' in solution) and (len(solution['merge_solvers']) > 0):
                        if k in solution['merge_solvers']:
                            v.post('solve', merge_problem)
                    elif v.role == 'merge_solver':
                        v.post('solve', merge_problem)
                return {'status': 'done'}

@@ -355,7 +363,7 @@ class Worker(object):

class Request(object):

    def __init__(self, worker_manager, data, worker, timeout=10000):
    def __init__(self, worker_manager, data, worker, timeout=10000, merge_solvers=list()):
        # self.worker_manager = worker_manager

        self.data = data
@@ -367,6 +375,7 @@ class Request(object):
        self.done_time = None

        self.solver = worker
        self.merge_solvers = merge_solvers

        self.response = list()

@@ -384,6 +393,7 @@ class Request(object):
        data = self.data
        data['request_id'] = self.request_id
        data['timeout'] = self.timeout
        data['merge_solvers'] = self.merge_solvers
        return data

    def get_id(self):
+2 −1
Changes for roles/solver.py: 2 added lines, 1 removed line.
Original line number Diff line number Diff line
@@ -115,7 +115,8 @@ class Solver(object):
        data = {
            'request_id': params['request_id'],
            'problem': params['name'],
            'worker': self.address
            'worker': self.address,
            'merge_solvers': params['merge_solvers']
        }
        data.update(solution)
        self.post('problem/solution', data)