def filter_current_klines(_klines, _collection_name, _collection): _last_record = get_last_db_record(_collection) logger.info( "{} : last kline : {} ".format(_collection_name, _last_record['kline']['time_str'] if _last_record else "None")) _out = None if _last_record: _out = list(filter(lambda x: int(x.start_time) > int(_last_record['timestamp']), _klines)) else: _out = _klines logger.info("{} : first kline : {} ".format(_collection_name, _out[0].time_str if _out else "None")) return _out
decimal_codec = DecimalCodec() type_registry = TypeRegistry([decimal_codec]) codec_options = CodecOptions(type_registry=type_registry) tickers = ["15m", "30m", "1h", "4h", "8h", "12h", "1d"] while 1: outdated = [] for raw_name in flatten(read_collections_file()): collection_root_name, exchange = extract_collection_name(raw_name) for ticker in tickers: collection_name = f"{collection_root_name}{ticker}" collection = db.get_collection(collection_name, codec_options=codec_options) record = get_last_db_record(collection) _current_time = datetime.datetime.now().timestamp() * 1000 _time_gap = 12 * 60 * 60 * 1000 if ticker == "1d" or ticker == "12h": _time_gap = 3 * 12 * 60 * 60 * 1000 if ticker == "8h": _time_gap = 24 * 60 * 60 * 1000 if ticker == "15m" or ticker == "30m": _time_gap = 8 * 60 * 60 * 1000 if exchange == "binance": if _current_time - record['timestamp'] > _time_gap: outdated.append(collection_name) elif exchange == "kucoin": _time_gap /= 1000 _current_time /= 1000