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): ...@@ -57,15 +57,20 @@ class Host(object):
return {'status': 'key error'} return {'status': 'key error'}
else: else:
# request = Request(self.worker_manager, problem.get_dict(), solvers=solvers) # request = Request(self.worker_manager, problem.get_dict(), solvers=solvers)
if solvers is None: merge_solvers = list()
_solvers = self.worker_manager.get_workers() # if solvers is None:
else: # _solvers = self.worker_manager.get_workers()
_solvers = dict() # else:
for k, v in self.worker_manager.get_workers().items(): _solvers = dict()
if k in solvers: for k, v in self.worker_manager.get_workers().items():
if (solvers is None) or (k in solvers):
if v.role == 'merge_solver':
merge_solvers.append(k)
else:
_solvers[k] = v _solvers[k] = v
for _, v in _solvers.items(): 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.broadcast()
request_id = request.get_id() request_id = request.get_id()
...@@ -110,7 +115,10 @@ class Host(object): ...@@ -110,7 +115,10 @@ class Host(object):
merge_problem['request_id'] = solution['request_id'] merge_problem['request_id'] = solution['request_id']
merge_problem['timeout'] = 10000 merge_problem['timeout'] = 10000
for k, v in self.worker_manager.workers.items(): 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) v.post('solve', merge_problem)
return {'status': 'done'} return {'status': 'done'}
...@@ -355,7 +363,7 @@ class Worker(object): ...@@ -355,7 +363,7 @@ class Worker(object):
class Request(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.worker_manager = worker_manager
self.data = data self.data = data
...@@ -367,6 +375,7 @@ class Request(object): ...@@ -367,6 +375,7 @@ class Request(object):
self.done_time = None self.done_time = None
self.solver = worker self.solver = worker
self.merge_solvers = merge_solvers
self.response = list() self.response = list()
...@@ -384,6 +393,7 @@ class Request(object): ...@@ -384,6 +393,7 @@ class Request(object):
data = self.data data = self.data
data['request_id'] = self.request_id data['request_id'] = self.request_id
data['timeout'] = self.timeout data['timeout'] = self.timeout
data['merge_solvers'] = self.merge_solvers
return data return data
def get_id(self): def get_id(self):
......
...@@ -115,7 +115,8 @@ class Solver(object): ...@@ -115,7 +115,8 @@ class Solver(object):
data = { data = {
'request_id': params['request_id'], 'request_id': params['request_id'],
'problem': params['name'], 'problem': params['name'],
'worker': self.address 'worker': self.address,
'merge_solvers': params['merge_solvers']
} }
data.update(solution) data.update(solution)
self.post('problem/solution', data) 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