fix(bot): 기동 버그 3건 수정 + feat(vikunja): 프로젝트 관리 기능 추가
- fix: apscheduler 누락 의존성 설치 - fix(main): StreamHandler cp949 UnicodeEncodeError 수정 (UTF-8 강제) - fix: workspaces.json 경로 Certes→Variet-Worker 수정 - fix(gemini): MCP issues detected 노이즈 필터 추가 - fix(bot): on_command_error 핸들러 추가 (CommandNotFound 로그 오염 방지) - feat(vikunja): projects 커맨드 (전체 프로젝트 목록+태스크 통계) - feat(vikunja): report 커맨드 (태스크+git log+devlog 종합 현황) - docs(agent): Vikunja 도구 섹션 확장 (12개 커맨드+라벨 가이드) - docs: known-issues 2건 추가, devlog 세션 1 기록
This commit is contained in:
9
main.py
9
main.py
@@ -5,6 +5,7 @@ FastAPI 서버 + Discord Bot + APScheduler를 동시 실행합니다.
|
||||
"""
|
||||
|
||||
import asyncio
|
||||
import io
|
||||
import logging
|
||||
import sys
|
||||
import signal
|
||||
@@ -21,8 +22,10 @@ import config
|
||||
LOG_DIR = Path(__file__).parent / "logs"
|
||||
LOG_DIR.mkdir(exist_ok=True)
|
||||
|
||||
_stdout_utf8 = io.TextIOWrapper(sys.stdout.buffer, encoding="utf-8", errors="replace")
|
||||
|
||||
handlers = [
|
||||
logging.StreamHandler(sys.stdout),
|
||||
logging.StreamHandler(_stdout_utf8),
|
||||
RotatingFileHandler(
|
||||
LOG_DIR / "variet.log",
|
||||
maxBytes=10 * 1024 * 1024, # 10MB
|
||||
@@ -75,7 +78,7 @@ async def run_scheduler():
|
||||
try:
|
||||
from apscheduler.schedulers.asyncio import AsyncIOScheduler
|
||||
except ImportError:
|
||||
logger.warning("APScheduler 미설치 — 스케줄러 비활성화 (pip install apscheduler)")
|
||||
logger.warning("APScheduler 미설치 - 스케줄러 비활성화 (pip install apscheduler)")
|
||||
return
|
||||
|
||||
scheduler = AsyncIOScheduler()
|
||||
@@ -91,7 +94,7 @@ async def run_scheduler():
|
||||
# scheduler.add_job(check_schedule, "cron", hour=18, id="anime_schedule")
|
||||
|
||||
scheduler.start()
|
||||
logger.info(f"스케줄러 시작 — {len(scheduler.get_jobs())}개 작업 등록")
|
||||
logger.info(f"스케줄러 시작 - {len(scheduler.get_jobs())}개 작업 등록")
|
||||
|
||||
# 스케줄러가 종료되지 않도록 대기
|
||||
try:
|
||||
|
||||
Reference in New Issue
Block a user