Skip to content

fix: 게시판별 크롤링 예외를 격리해 이후 게시판 처리 중단을 방지 - #197

Open
insik03 wants to merge 2 commits into
masterfrom
fix/#196
Open

insik03 wants to merge 2 commits into
masterfrom
fix/#196

Conversation

@insik03

@insik03 insik03 commented Sep 23, 2026 •

Copy link
Copy Markdown

작업 내용

  • article.py 메인 루프에서 게시판별 처리를 개별 try/except로 감쌌습니다.
  • 한 게시판에서 예외가 발생하면 원인과 스택트레이스를 로그로 남기고, connection.rollback() 후 다음 게시판으로 넘어가도록 변경했습니다 (기존에는 전체 루프가 중단됨).

문제 원인

메인 루프(for board in _boards:)가 게시판별 처리를 감싸는 예외 처리 없이 순서대로 실행되어, 한 게시판에서 예외가 발생하면(원인 불문) 이후 순서의 게시판은 이번 실행에서 처리되지 않았습니다.

boards 리스트 순서가 [일반공지, 장학공지, 취업공지, 학사공지, 현장실습공지, 학생생활]이고 run.sh가 이를 3개씩 두 세그먼트(article.py 1, article.py 2)로 나눠 실행하므로, 세그먼트 1에서 앞쪽 게시판이 실패하면 취업공지(board_id=8)까지 영향을 받는 구조였습니다. #191(is_delete 오타)이 정확히 이 패턴으로 발생했던 사례이고, 오타 자체는 고쳐졌지만 "한 게시판 실패가 이후 게시판을 막는" 구조적 문제는 남아있었습니다.

확인 사항

  • Python 구문 검사(py_compile) 통과
  • 기존 로직(크롤링 → DB 반영 → 삭제 확인) 순서는 그대로 두고 try/except로 감싸기만 함
  • 실제 크롤링 실행 및 게시판 실패 시 다음 게시판으로 넘어가는 동작은 직접 실행해 확인하지 못했습니다. (포털 로그인과 DB 접속이 필요)

참고 사항

  • 이 PR은 재발 방지(격리) 목적이며, 취업공지에 신규 글이 들어오지 않는 문제 자체를 해결하지는 않습니다.
  • crawling/koreatech_article/run.sh가 article.py를 백그라운드(&)로 실행하고 종료 코드를 확인하지 않아, 오류를 격리해도 종료 코드로 얻던 실패 신호는 잃지 않습니다. 대신 기존 raise가 남기던 스택트레이스가 사라지지 않도록 traceback.print_exc()를 함께 남깁니다.
  • 운영 DB 조회 결과 board_id=8은 2024-10 이후 신규 글이 들어오지 않은 것으로 보입니다(created_at 최대 2024-10-26). 다만 updated_at은 2026-08-04, 08-05, 09-23에 갱신된 흔적이 있어, 배치가 안 도는 것인지 돌지만 새 글을 못 넣는 것인지는 구분되지 않습니다. 서버의 logs/output1.log(취업공지는 세그먼트 1) 확인이 필요합니다.
  • KOIN_API_V2에서 보고된 "2016년 글이 최상단에 노출" 증상은 크롤러 문제가 아니라 목록 정렬(id DESC) 문제였고, KOIN_API_V2#2459(PR #2460)에서 다룹니다.

close #196

한 게시판 처리 중 예외(SQL 오류, 파싱 실패 등 원인 불문)가 발생하면
루프가 그대로 raise 되어 이후 순서의 게시판이 이번 실행에서 아예
처리되지 않았다. #191(is_delete 오타)이 이 구조로 취업공지까지
영향을 줬던 사례이며, 오타를 고쳐도 같은 구조적 문제는 남아있었다.

게시판별 처리를 개별 try/except로 감싸 한 게시판의 실패가 이후
게시판 크롤링을 막지 않도록 격리한다.

close #196

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented Sep 23, 2026 •

Copy link
Copy Markdown

Important

  • 🔍 Trigger review

This repository does not receive automatic reviews because it has fewer than 10 stars.

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Advanced

Run ID: 61aebc4c-f89e-48e5-8861-c181db013914


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

오류를 격리하면서 메시지만 출력해, 기존 raise 대비 로그에서 원인 파악에
필요한 스택트레이스가 사라졌다. traceback.print_exc() 로 함께 남긴다.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

fix: 게시판 크롤링 오류 시 이후 게시판 처리가 통째로 중단되는 문제

1 participant