File size: 1,970 Bytes
3a36548 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 | #!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
๋๋ถ์ด๋ฏผ์ฃผ๋น ํฌ๋กค๋ฌ ์ค์ผ์ค๋ฌ
- ๋งค์ผ ์ง์ ๋ ์๊ฐ์ ์๋ ์คํ
- ๋ฐฑ๊ทธ๋ผ์ด๋ ์คํ ์ง์
- ๋ก๊ทธ ๊ธฐ๋ก
"""
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()
# ๋งค์ผ ์ค์ 9์์ ์คํ
scheduler.add_job(
scheduled_task,
trigger=CronTrigger(hour=9, minute=0),
id='daily_crawl',
name='๋ฏผ์ฃผ๋น ํฌ๋กค๋ฌ ์ผ์ผ ์คํ',
replace_existing=True
)
# ์ฆ์ ํ ๋ฒ ์คํ (ํ
์คํธ์ฉ)
# scheduler.add_job(scheduled_task, 'date', run_date=datetime.now())
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()
|