import logging import asyncio from environs import load_dotenv from extractor import ApiExtractor from loader import EtlLoader from settings import ApiConfig, MiscSettings from state import JsonFileStorage, State from tg_bot import TgBot load_dotenv() logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(funcName)s - %(message)s') async def main(): extractor = ApiExtractor() storage = JsonFileStorage() api = ApiConfig() state = State(storage=storage) loader = EtlLoader() misc_settings = MiscSettings() logging.info('Обработчик готов к работе.') if misc_settings.use_notify: tgbot = TgBot() await tgbot.send_notify('Обработчик запущен.') while True: for iblock_id in api.iblocks: abitrs = await extractor.get_extract_data(iblock_id=int(iblock_id), state=state, storage=storage) for abitr in abitrs: await loader.load_data(state=state, abitr=abitr, storage=storage, iblock_id=int(iblock_id)) await asyncio.sleep(10) if __name__ == '__main__': asyncio.run(main())