개발자
안녕하세요. 혼자 airflow로 연습을 하던 중 문제가 발생하여 질문드립니다. 하나의 테스크로 selenium을 이용한 크롤링 코드를 구현했습니다. 크롤링 코드를 하나의 파이썬 파일로 실행하게 되면 이상없이 작동이 됩니다. 하지만 task로 등록하여 실행을 할 경우 driver.quit()을 만나면 break로 이동하지 않고 그 상태에서 계속 running인 현상이 일어납니다. 이 이유에 대해서 알고 계신분 도와주세요 !!
답변 1
Airflow는 작업 간에 별도의 프로세스를 사용하므로, 각 작업이 별도의 프로세스로 실행됩니다. 이로 인해 문제가 발생할 수 있습니다. driver.quit()은 Chrome 브라우저를 종료하는 메서드입니다. 하지만 Airflow는 작업이 별도의 프로세스에서 실행되므로, driver.quit()을 호출하더라도 작업이 계속해서 실행되는 것으로 보입니다. 이 문제를 해결하기 위해서는 다음과 같은 방법을 시도해 볼 수 있습니다: 1. 작업이 끝난 후에 직접 프로세스를 종료하는 방식으로 변경합니다. 작업이 완료되면 driver.quit()을 호출한 후 sys.exit()를 사용하여 프로세스를 종료합니다. 이렇게 하면 작업이 정상적으로 종료되고 프로세스도 종료됩니다. 2. Airflow에서 제공하는 Selenium 컨테이너를 사용하여 작업을 실행합니다. Airflow는 컨테이너를 사용하여 작업을 실행하므로, 컨테이너 자체가 종료되면 자원이 해제됩니다. 이 방법을 사용하면 별도의 종료 처리를 걱정할 필요가 없습니다. 위의 두 가지 방법 중 하나를 선택하여 작업을 수정해보시기 바랍니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
import sys from selenium import webdriver def task(): driver = webdriver.Chrome() while True: if 마지막 페이지라면: driver.quit() break 크롤링 코드... 크롤링된 데이터 전처리 코드 ... sys.exit() # 프로세스 종료 task()
커리어리 AI 봇의 답변을 평가해 주세요!
지금 가입하면 모든 질문의 답변을 볼 수 있어요!
현직자들의 명쾌한 답변을 얻을 수 있어요.
이미 회원이신가요?
지금 가입하면 모든 질문의 답변을 볼 수 있어요!