Skip to content

Commit 03f84f3

Browse files
committed
now do local eval
1 parent f7e7b43 commit 03f84f3

File tree

2 files changed

+28
-0
lines changed

2 files changed

+28
-0
lines changed

posthog/client.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -600,6 +600,13 @@ def _load_feature_flags(self):
600600
"To use feature flags, please set a personal_api_key "
601601
"More information: https://posthog.com/docs/api/overview",
602602
)
603+
elif e.status == 402:
604+
self.log.warning("[FEATURE FLAGS] PostHog feature flags quota limited")
605+
# Reset all feature flag data when quota limited
606+
self.feature_flags = []
607+
self.feature_flags_by_key = {}
608+
self.group_type_mapping = {}
609+
self.cohorts = {}
603610
else:
604611
self.log.error(f"[FEATURE FLAGS] Error loading feature flags: {e}")
605612
except Exception as e:

posthog/test/test_client.py

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import six
88

99
from posthog.client import Client
10+
from posthog.request import APIError
1011
from posthog.test.test_utils import FAKE_TEST_API_KEY
1112
from posthog.version import VERSION
1213

@@ -384,6 +385,26 @@ def test_basic_capture_with_locally_evaluated_feature_flags(self, patch_decide):
384385
assert "$feature/false-flag" not in msg["properties"]
385386
assert "$active_feature_flags" not in msg["properties"]
386387

388+
389+
@mock.patch("posthog.client.get")
390+
def test_load_feature_flags_quota_limited(self, patch_get):
391+
mock_response = {
392+
"type": "quota_limited",
393+
"detail": "You have exceeded your feature flag request quota",
394+
"code": "payment_required"
395+
}
396+
patch_get.side_effect = APIError(402, mock_response["detail"])
397+
398+
client = Client(FAKE_TEST_API_KEY, personal_api_key="test")
399+
with self.assertLogs("posthog", level="WARNING") as logs:
400+
client._load_feature_flags()
401+
402+
self.assertEqual(client.feature_flags, [])
403+
self.assertEqual(client.feature_flags_by_key, {})
404+
self.assertEqual(client.group_type_mapping, {})
405+
self.assertEqual(client.cohorts, {})
406+
self.assertIn("PostHog feature flags quota limited", logs.output[0])
407+
387408
@mock.patch("posthog.client.decide")
388409
def test_dont_override_capture_with_local_flags(self, patch_decide):
389410
patch_decide.return_value = {"featureFlags": {"beta-feature": "random-variant"}}

0 commit comments

Comments
 (0)