@@ -240,6 +240,9 @@ def _load_feature_flags(self):
240240 'To use feature flags, please set a personal_api_key ' \
241241 'More information: https://posthog.com/docs/api/overview'
242242 )
243+ except Exception as e :
244+ self .log .warning ('[FEATURE FLAGS] Fetching feature flags failed with following error. We will retry in %s seconds.' % self .poll_interval )
245+ self .log .warning (e )
243246
244247 self ._last_feature_flag_poll = datetime .utcnow ().replace (tzinfo = tzutc ())
245248
@@ -251,20 +254,32 @@ def load_feature_flags(self):
251254 def feature_enabled (self , key , distinct_id , default = False ):
252255 require ('key' , key , string_types )
253256 require ('distinct_id' , distinct_id , ID_TYPES )
257+ error = False
254258
255259 if not self .feature_flags :
256260 self .load_feature_flags ()
257261
258- try :
259- feature_flag = [flag for flag in self .feature_flags if flag ['key' ] == key ][0 ]
260- except IndexError :
261- return default
262-
263- if feature_flag .get ('is_simple_flag' ):
264- response = _hash (key , distinct_id ) <= (feature_flag ['rollout_percentage' ] / 100 )
262+ # If loading in previous line failed
263+ if not self .feature_flags :
264+ response = default
265+ error = True
265266 else :
266- request = get (self .api_key , '/decide/' , self .host )
267- response = key in request ['featureFlags' ]
267+ try :
268+ feature_flag = [flag for flag in self .feature_flags if flag ['key' ] == key ][0 ]
269+ except IndexError :
270+ return default
271+
272+ if feature_flag .get ('is_simple_flag' ):
273+ response = _hash (key , distinct_id ) <= (feature_flag ['rollout_percentage' ] / 100 )
274+ else :
275+ try :
276+ request = get (self .api_key , '/decide/' , self .host , timeout = 1 )
277+ response = key in request ['featureFlags' ]
278+ except Exception as e :
279+ response = default
280+ self .log .warning ('[FEATURE FLAGS] Unable to get data for flag %s, because of the following error:' % key )
281+ self .log .warning (e )
282+ error = True
268283
269284 self .capture (distinct_id , '$feature_flag_called' , {'$feature_flag' : key , '$feature_flag_response' : response })
270285 return response
0 commit comments