Merge branch '6432-pysdk-more-ca-certs-wip'
[arvados.git] / sdk / python / arvados / events.py
index 268692637afb7a45721322f1617b3aea50788d60..3036a25fe092260d8da0a52be90380a570f9bc46 100644 (file)
@@ -15,11 +15,7 @@ _logger = logging.getLogger('arvados.events')
 
 class EventClient(WebSocketClient):
     def __init__(self, url, filters, on_event):
-        # Prefer system's CA certificates (if available)
-        ssl_options = {}
-        certs_path = '/etc/ssl/certs/ca-certificates.crt'
-        if os.path.exists(certs_path):
-            ssl_options['ca_certs'] = certs_path
+        ssl_options = {'ca_certs': arvados.util.ca_certs_path()}
         if config.flag_is_true('ARVADOS_API_HOST_INSECURE'):
             ssl_options['cert_reqs'] = ssl.CERT_NONE
         else:
@@ -65,6 +61,7 @@ class PollClient(threading.Thread):
             self.filters = [[]]
         self.on_event = on_event
         self.poll_time = poll_time
+        self.daemon = True
         self.stop = threading.Event()
 
     def run(self):
@@ -129,12 +126,17 @@ def _subscribe_websocket(api, filters, on_event):
             client.close_connection()
 
 def subscribe(api, filters, on_event, poll_fallback=15):
-    '''
-    api: a client object retrieved from arvados.api(). The caller should not use this client object for anything else after calling subscribe().
-    filters: Initial subscription filters.
-    on_event: The callback when a message is received.
-    poll_fallback: If websockets are not available, fall back to polling every N seconds.  If poll_fallback=False, this will return None if websockets are not available.
-    '''
+    """
+    :api:
+      a client object retrieved from arvados.api(). The caller should not use this client object for anything else after calling subscribe().
+    :filters:
+      Initial subscription filters.
+    :on_event:
+      The callback when a message is received.
+    :poll_fallback:
+      If websockets are not available, fall back to polling every N seconds.  If poll_fallback=False, this will return None if websockets are not available.
+    """
+
     if not poll_fallback:
         return _subscribe_websocket(api, filters, on_event)