|
|
|
|
| """
|
| ๋๋ถ์ด๋ฏผ์ฃผ๋น ํฌ๋กค๋ฌ ์ค์ผ์ค๋ฌ
|
| - ๋งค์ผ ์ง์ ๋ ์๊ฐ์ ์๋ ์คํ
|
| - ๋ฐฑ๊ทธ๋ผ์ด๋ ์คํ ์ง์
|
| - ๋ก๊ทธ ๊ธฐ๋ก
|
| """
|
|
|
| import asyncio
|
| import logging
|
| from datetime import datetime
|
| from apscheduler.schedulers.asyncio import AsyncIOScheduler
|
| from apscheduler.triggers.cron import CronTrigger
|
| from minjoo_crawler_async import MinjooAsyncCrawler
|
|
|
|
|
| logging.basicConfig(
|
| level=logging.INFO,
|
| format='%(asctime)s [%(levelname)s] %(message)s',
|
| handlers=[
|
| logging.FileHandler('crawler_scheduler.log', encoding='utf-8'),
|
| logging.StreamHandler()
|
| ]
|
| )
|
|
|
| logger = logging.getLogger(__name__)
|
|
|
| async def scheduled_task():
|
| """์ค์ผ์ค๋ ์์
"""
|
| logger.info("="*60)
|
| logger.info("์ค์ผ์ค๋ ํฌ๋กค๋ง ์์")
|
| logger.info("="*60)
|
|
|
| try:
|
| crawler = MinjooAsyncCrawler()
|
| await crawler.run_incremental()
|
| 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',
|
| name='๋ฏผ์ฃผ๋น ํฌ๋กค๋ฌ ์ผ์ผ ์คํ',
|
| replace_existing=True
|
| )
|
|
|
|
|
|
|
|
|
| logger.info("์ค์ผ์ค๋ฌ ์์")
|
| logger.info("๋งค์ผ ์ค์ 9์์ ํฌ๋กค๋ง ์คํ")
|
| logger.info("์ข
๋ฃํ๋ ค๋ฉด Ctrl+C๋ฅผ ๋๋ฅด์ธ์")
|
|
|
| scheduler.start()
|
|
|
| try:
|
|
|
| asyncio.get_event_loop().run_forever()
|
| except (KeyboardInterrupt, SystemExit):
|
| logger.info("์ค์ผ์ค๋ฌ ์ข
๋ฃ")
|
|
|
| if __name__ == "__main__":
|
| main()
|
|
|