|
|
|
|
| """
|
| ํตํฉ ์ ๋น ํฌ๋กค๋ฌ ์ค์ผ์ค๋ฌ
|
| - ๋๋ถ์ด๋ฏผ์ฃผ๋น, ๊ตญ๋ฏผ์ํ, ์กฐ๊ตญํ์ ๋น, ๊ฐํ์ ๋น, ๊ธฐ๋ณธ์๋๋น, ์ง๋ณด๋น ๋งค์ผ ์๋ ํฌ๋กค๋ง
|
| """
|
|
|
| import asyncio
|
| import logging
|
| from apscheduler.schedulers.asyncio import AsyncIOScheduler
|
| from apscheduler.triggers.cron import CronTrigger
|
| from unified_crawler import crawl_all_parties
|
|
|
| logging.basicConfig(
|
| level=logging.INFO,
|
| format='%(asctime)s [%(levelname)s] %(message)s',
|
| handlers=[
|
| logging.FileHandler('unified_scheduler.log', encoding='utf-8'),
|
| logging.StreamHandler()
|
| ]
|
| )
|
| logger = logging.getLogger(__name__)
|
|
|
|
|
| async def scheduled_task():
|
| logger.info("=" * 60)
|
| logger.info("์ค์ผ์ค๋ ํฌ๋กค๋ง ์์ (6๊ฐ ์ ๋น)")
|
| logger.info("=" * 60)
|
| try:
|
| await crawl_all_parties()
|
| logger.info("์ค์ผ์ค๋ ํฌ๋กค๋ง ์๋ฃ")
|
| except Exception as e:
|
| logger.error(f"ํฌ๋กค๋ง ์คํจ: {e}", exc_info=True)
|
|
|
|
|
| def main():
|
| scheduler = AsyncIOScheduler()
|
|
|
| scheduler.add_job(
|
| scheduled_task,
|
| trigger=CronTrigger(hour=9, minute=0),
|
| id='daily_crawl_all',
|
| name='ํตํฉ ์ ๋น ํฌ๋กค๋ฌ ์ผ์ผ ์คํ',
|
| replace_existing=True
|
| )
|
|
|
| logger.info("ํตํฉ ์ ๋น ํฌ๋กค๋ฌ ์ค์ผ์ค๋ฌ ์์")
|
| logger.info("๋งค์ผ ์ค์ 9์์ 6๊ฐ ์ ๋น ํฌ๋กค๋ง ์คํ")
|
| logger.info("์ข
๋ฃํ๋ ค๋ฉด Ctrl+C๋ฅผ ๋๋ฅด์ธ์")
|
|
|
| scheduler.start()
|
|
|
| try:
|
| asyncio.get_event_loop().run_forever()
|
| except (KeyboardInterrupt, SystemExit):
|
| logger.info("์ค์ผ์ค๋ฌ ์ข
๋ฃ")
|
|
|
|
|
| if __name__ == "__main__":
|
| main()
|
|
|