Merge pull request #3244 from kleesc/IPResolver-fix
Fix: Should not break from ipresolver thread
This commit is contained in:
commit
b19443c4e1
1 changed files with 10 additions and 3 deletions
|
@ -84,6 +84,7 @@ class IPResolver(IPResolverInterface):
|
||||||
self.app = app
|
self.app = app
|
||||||
self.geoip_db = geoip2.database.Reader('util/ipresolver/GeoLite2-Country.mmdb')
|
self.geoip_db = geoip2.database.Reader('util/ipresolver/GeoLite2-Country.mmdb')
|
||||||
self._worker = _UpdateIPRange(_UPDATE_INTERVAL)
|
self._worker = _UpdateIPRange(_UPDATE_INTERVAL)
|
||||||
|
self._worker_started = False
|
||||||
|
|
||||||
@ttl_cache(maxsize=100, ttl=600)
|
@ttl_cache(maxsize=100, ttl=600)
|
||||||
def is_ip_possible_threat(self, ip_address):
|
def is_ip_possible_threat(self, ip_address):
|
||||||
|
@ -129,8 +130,14 @@ class IPResolver(IPResolverInterface):
|
||||||
return location_function(ip_address)
|
return location_function(ip_address)
|
||||||
|
|
||||||
def _get_location_function(self):
|
def _get_location_function(self):
|
||||||
if not self.app.config.get('TESTING', False) and not self._worker.is_alive():
|
if (not self.app.config.get('TESTING', False) and not self._worker_started and
|
||||||
self._worker.start()
|
not self._worker.is_alive()):
|
||||||
|
try:
|
||||||
|
self._worker.start()
|
||||||
|
self._worker_started = True
|
||||||
|
except:
|
||||||
|
logger.exception('Got exception try to start ip resolver thread')
|
||||||
|
|
||||||
try:
|
try:
|
||||||
cache = CACHE
|
cache = CACHE
|
||||||
sync_token = cache.get('sync_token', None)
|
sync_token = cache.get('sync_token', None)
|
||||||
|
@ -210,7 +217,7 @@ class _UpdateIPRange(Thread):
|
||||||
except:
|
except:
|
||||||
logger.exception('Failed trying to update aws ip range')
|
logger.exception('Failed trying to update aws ip range')
|
||||||
time.sleep(_FAILED_UPDATE_RETRY_SECS)
|
time.sleep(_FAILED_UPDATE_RETRY_SECS)
|
||||||
break
|
continue
|
||||||
|
|
||||||
sync_token = aws_ip_range_json['syncToken']
|
sync_token = aws_ip_range_json['syncToken']
|
||||||
all_amazon, regions = IPResolver._parse_amazon_ranges(aws_ip_range_json)
|
all_amazon, regions = IPResolver._parse_amazon_ranges(aws_ip_range_json)
|
||||||
|
|
Reference in a new issue