41 lines
1.1 KiB
Python
41 lines
1.1 KiB
Python
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())
|