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

Make it possible to select merge solvers to use

parent bffa7d2f
......@@ -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):
......
......@@ -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)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment