def make_navitia_wrapper(): """ return a navitia wrapper to call the navitia API """ url = current_app.config['NAVITIA_URL'] token = current_app.config.get('NAVITIA_TOKEN') instance = current_app.config['NAVITIA_INSTANCE'] return navitia_wrapper.Navitia(url=url, token=token).instance(instance)
def make_navitia_wrapper(contributor): return navitia_wrapper.Navitia( url=current_app.config.get(str("NAVITIA_URL")), token=contributor.navitia_token, timeout=current_app.config.get(str("NAVITIA_TIMEOUT"), 5), cache=redis_client, query_timeout=current_app.config.get(str("NAVITIA_QUERY_CACHE_TIMEOUT"), 600), pubdate_timeout=current_app.config.get(str("NAVITIA_PUBDATE_CACHE_TIMEOUT"), 600), ).instance(contributor.navitia_coverage)
def __init__(self): url = current_app.config['NAVITIA_URL'] token = current_app.config.get('NAVITIA_GTFS_RT_TOKEN') instance = current_app.config['NAVITIA_GTFS_RT_INSTANCE'] self.navitia_wrapper = navitia_wrapper.Navitia( url=url, token=token).instance(instance) self.navitia_wrapper.timeout = current_app.config.get( 'NAVITIA_TIMEOUT', 5) self.contributor = current_app.config['GTFS_RT_CONTRIBUTOR']
def __init__(self, contributor, is_new_complete): # type: (Contributor, bool) -> None self.navitia = navitia_wrapper.Navitia( url=current_app.config.get(str("NAVITIA_URL")), token=contributor.navitia_token, timeout=current_app.config.get(str("NAVITIA_TIMEOUT"), 5), cache=redis_client, query_timeout=current_app.config.get( str("NAVITIA_QUERY_CACHE_TIMEOUT"), 600), pubdate_timeout=current_app.config.get( str("NAVITIA_PUBDATE_CACHE_TIMEOUT"), 600), ).instance(contributor.navitia_coverage) self.contributor = contributor self.is_new_complete = is_new_complete
def __init__(self, contributor: Contributor, logger_name: str = __name__): self.navitia = navitia_wrapper.Navitia( url=current_app.config.get("NAVITIA_URL"), token=contributor.navitia_token, timeout=current_app.config.get("NAVITIA_TIMEOUT", 5), cache=kirin.redis_client, query_timeout=current_app.config.get("NAVITIA_QUERY_CACHE_TIMEOUT", 600), pubdate_timeout=current_app.config.get( "NAVITIA_PUBDATE_CACHE_TIMEOUT", 600), ).instance(contributor.navitia_coverage) self.contributor = contributor self.log = logging.LoggerAdapter( logging.getLogger(logger_name), extra={"contributor": self.contributor.id})
def gtfs_poller(self, config): func_name = 'gtfs_poller' logger = logging.LoggerAdapter(logging.getLogger(__name__), extra={'contributor': config['contributor']}) logger.debug('polling of %s', config['feed_url']) contributor = config['contributor'] lock_name = make_kirin_lock_name(func_name, contributor) with get_lock(logger, lock_name, app.config['REDIS_LOCK_TIMEOUT_POLLER']) as locked: if not locked: new_relic.ignore_transaction() return # We do a HEAD request at the very beginning of polling and we compare it with the previous one to check if # the gtfs-rt is changed. # If the HEAD request or Redis get/set fail, we just ignore this part and do the polling anyway if not _is_newer(config): new_relic.ignore_transaction() manage_db_no_new(connector='gtfs-rt', contributor=contributor) return try: response = requests.get(config['feed_url'], timeout=config.get('timeout', 1)) response.raise_for_status() except Exception as e: manage_db_error(data='', connector='gtfs-rt', contributor=contributor, status='KO', error='Http Error') logger.debug(str(e)) return nav = navitia_wrapper.Navitia(url=config['navitia_url'], token=config['token'], timeout=5, cache=redis, query_timeout=app.config.get('NAVITIA_QUERY_CACHE_TIMEOUT', 600), pubdate_timeout=app.config.get('NAVITIA_PUBDATE_CACHE_TIMEOUT', 600))\ .instance(config['coverage']) proto = gtfs_realtime_pb2.FeedMessage() try: proto.ParseFromString(response.content) except DecodeError: manage_db_error(proto, 'gtfs-rt', contributor=contributor, status='KO', error='Decode Error') logger.debug('invalid protobuf') else: model_maker.handle(proto, nav, contributor) logger.info('%s for %s is finished', func_name, contributor)
def gtfs_poller(self, config): logger = logging.LoggerAdapter( logging.getLogger(__name__), extra={'contributor': config['contributor']}) logger.debug('polling of %s', config['feed_url']) response = requests.get(config['feed_url'], timeout=config.get('timeout', 1)) response.raise_for_status() nav = navitia_wrapper.Navitia(url=config['navitia_url'], token=config['token'])\ .instance(config['coverage']) nav.timeout = 5 proto = gtfs_realtime_pb2.FeedMessage() proto.ParseFromString(response.content) model_maker.handle(proto, nav, config['contributor']) logger.debug('gtfsrt polling finished')
def __init__(self): url = current_app.config['NAVITIA_URL'] token = current_app.config.get('NAVITIA_GTFS_RT_TOKEN') timeout = current_app.config.get('NAVITIA_TIMEOUT', 5) instance = current_app.config['NAVITIA_GTFS_RT_INSTANCE'] query_timeout = current_app.config.get('NAVITIA_QUERY_CACHE_TIMEOUT', 600) pubdate_timeout = current_app.config.get( 'NAVITIA_PUBDATE_CACHE_TIMEOUT', 600) self.navitia_wrapper = navitia_wrapper.Navitia( url=url, token=token, timeout=timeout, cache=redis, query_timeout=query_timeout, pubdate_timeout=pubdate_timeout).instance(instance) self.contributor = current_app.config['GTFS_RT_CONTRIBUTOR']
def dumb_nav_wrapper(): """return a dumb navitia wrapper (all the param are useless since the 'query' call has been mocked)""" return navitia_wrapper.Navitia(url='').instance('')