mirror of
https://github.com/internetarchive/warcprox.git
synced 2025-01-18 13:22:09 +01:00
add method available_services to ServiceRegistry, returns all services considered up for the supplied role
This commit is contained in:
parent
345348fa46
commit
287258e104
@ -161,3 +161,11 @@ class ServiceRegistry(object):
|
||||
except r.ReqlNonExistenceError:
|
||||
return None
|
||||
|
||||
def available_services(self, role):
|
||||
try:
|
||||
result = self.r.table('services').filter({"role":role}).filter(
|
||||
lambda svc: r.now().sub(svc["last_heartbeat"]) < 3 * svc["heartbeat_interval"] #.default(20.0)
|
||||
).order_by("load").run()
|
||||
return result
|
||||
except r.ReqlNonExistenceError:
|
||||
return []
|
||||
|
@ -151,3 +151,16 @@ def test_service_registry(r):
|
||||
assert svcreg.available_service("no-such-role") == None
|
||||
assert svcreg.available_service("yes-such-role") == None
|
||||
|
||||
svc0 = {
|
||||
"role": "yes-such-role",
|
||||
"load": 100.0,
|
||||
"heartbeat_interval": 0.2,
|
||||
}
|
||||
svc1 = {
|
||||
"role": "yes-such-role",
|
||||
"load": 200.0,
|
||||
"heartbeat_interval": 0.2,
|
||||
}
|
||||
svc0 = svcreg.heartbeat(svc0)
|
||||
svc1 = svcreg.heartbeat(svc1)
|
||||
assert len(svcreg.available_services("yes-such-role")) == 2
|
||||
|
Loading…
x
Reference in New Issue
Block a user