Skip to content

Commit fe6d0dc

Browse files
authored
Resolve polling issues with feature flags (#29)
* resolve polling issues * lint
1 parent fbde5ca commit fe6d0dc

File tree

3 files changed

+9
-4
lines changed

3 files changed

+9
-4
lines changed

example.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,4 +44,4 @@
4444
posthog.set("new_distinct_id", {"current_browser": "Chrome"})
4545
posthog.set("new_distinct_id", {"current_browser": "Firefox"})
4646

47-
posthog.shutdown()
47+
# posthog.shutdown()

posthog/client.py

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,7 @@ def __init__(
6565
self.timeout = timeout
6666
self.feature_flags = None
6767
self.poll_interval = poll_interval
68+
self.poller = None
6869

6970
# personal_api_key: This should be a generated Personal API Key, private
7071
self.personal_api_key = personal_api_key
@@ -275,6 +276,9 @@ def join(self):
275276
# consumer thread has not started
276277
pass
277278

279+
if self.poller:
280+
self.poller.stop()
281+
278282
def shutdown(self):
279283
"""Flush all messages and cleanly shutdown the client"""
280284
self.flush()
@@ -309,8 +313,9 @@ def load_feature_flags(self):
309313
return
310314

311315
self._load_feature_flags()
312-
poller = Poller(interval=timedelta(seconds=self.poll_interval), execute=self._load_feature_flags)
313-
poller.start()
316+
if not (self.poller and self.poller.is_alive()):
317+
self.poller = Poller(interval=timedelta(seconds=self.poll_interval), execute=self._load_feature_flags)
318+
self.poller.start()
314319

315320
def feature_enabled(self, key, distinct_id, default=False):
316321
require("key", key, string_types)

posthog/poller.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
class Poller(threading.Thread):
55
def __init__(self, interval, execute, *args, **kwargs):
66
threading.Thread.__init__(self)
7-
self.daemon = False
7+
self.daemon = True # Make daemon to not interfere with program exit
88
self.stopped = threading.Event()
99
self.interval = interval
1010
self.execute = execute

0 commit comments

Comments
 (0)