Browse Source

Be more robust to missing keys.

master
Chris Smith 8 years ago
parent
commit
906f24b63f
1 changed files with 11 additions and 3 deletions
  1. 11
    3
      fetcher.py

+ 11
- 3
fetcher.py View File

@@ -11,6 +11,14 @@ class Fetcher:
11 11
     self._prefix = prefix
12 12
 
13 13
 
14
+  def _read(self, key, **kwargs):
15
+    try:
16
+      node = self._client.read(self._prefix + key, **kwargs)
17
+      return node.value if node else None
18
+    except etcd.EtcdKeyNotFound:
19
+      return None
20
+
21
+
14 22
   def _read_recursive(self, key):
15 23
     try:
16 24
       return self._client.read(self._prefix + key, recursive=True)
@@ -27,13 +35,13 @@ class Fetcher:
27 35
 
28 36
 
29 37
   def wait_for_update(self):
30
-    original_time = self._client.read(self._prefix + '/_updated').value
38
+    original_time = self._read('/_updated')
31 39
     new_time = original_time
32 40
 
33 41
     while new_time == original_time:
34 42
       try:
35
-        new_time = self._client.read(self._prefix + '/_updated', wait=True).value
43
+        new_time = self._read('/_updated', wait=True)
36 44
       except etcd.EtcdWatchTimedOut:
37
-        new_time = self._client.read(self._prefix + '/_updated').value
45
+        new_time = self._read('/_updated')
38 46
       time.sleep(10)
39 47
 

Loading…
Cancel
Save