41 lines
1.1 KiB
Python
Executable File
41 lines
1.1 KiB
Python
Executable File
#!/usr/bin/env python
|
|
# -*- coding: utf-8 -*-
|
|
|
|
import logging
|
|
from bgpranking.prefixdb import PrefixDatabase
|
|
from bgpranking.libs.helpers import long_sleep, shutdown_requested
|
|
import requests
|
|
|
|
logging.basicConfig(format='%(asctime)s %(name)s %(levelname)s:%(message)s',
|
|
level=logging.INFO, datefmt='%I:%M:%S')
|
|
|
|
logger = logging.getLogger('PrefixDB Fetcher')
|
|
|
|
|
|
class PrefixDBManager():
|
|
|
|
def __init__(self, loglevel: int=logging.DEBUG):
|
|
self.prefix_db = PrefixDatabase(loglevel=loglevel)
|
|
|
|
def load_prefixes(self):
|
|
self.prefix_db.load_prefixes()
|
|
|
|
def needs_update(self):
|
|
return self.prefix_db.update_required()
|
|
|
|
|
|
if __name__ == '__main__':
|
|
p = PrefixDBManager()
|
|
while True:
|
|
if shutdown_requested():
|
|
break
|
|
try:
|
|
if p.needs_update():
|
|
p.load_prefixes()
|
|
except requests.exceptions.ConnectionError:
|
|
logger.critical('Unable to download the prefix database.')
|
|
long_sleep(60)
|
|
continue
|
|
if not long_sleep(3600):
|
|
break
|