Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # Сама фабрика:
- def predicate_maker(only_ids: Optional[List[str]], without_ids: Optional[List[str]],
- start_date: Optional[date], end_date: Optional[date]) -> Callable:
- """
- Фабрика замыканий, чтобы не тащить гору проверок в основной цикл.
- Предназначена для быстрой проверки id сущности и даты за которые мы получили показания
- """
- today = datetime.now().date()
- def predicate(current_id: Optional[str], check_date: Optional[date]) -> bool:
- """
- Функция для проверки условий. Сохраняет в себе даты и списки, что
- позволяет легко и быстро их проверять и пропускать ненужные итерации обработки
- """
- result = False
- if only_ids and current_id and current_id not in only_ids:
- # паука/станок нельзя обрабатывать, он не входит в список нужных
- result = True
- if without_ids and current_id and current_id in without_ids:
- # паука/станок нельзя обрабатывать, он один из игнорируемых
- result = True
- if start_date and check_date and check_date < start_date:
- # слишком ранние данные
- result = True
- if end_date and check_date and check_date > end_date:
- # слишком поздние данные
- result = True
- if check_date and check_date == today:
- # сегодняшние данные ещё не записаны
- result = True
- return result
- return predicate
- # Создаём предикат:
- predicate = predicate_maker(conf.only_spiders, conf.without_spiders, conf.start_date, conf.end_date)
- # Используем:
- for spider_id, spider_files in filenames_gen(get_folder_path(key=conf.csv_key)):
- if predicate(spider_id, None):
- continue
- # тут наш код
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement