Python Tail: 차단하지 않고 로그 파일 테일링
Python에서는 다양한 방법을 사용하여 차단이나 잠금 없이 로그 파일을 테일링할 수 있습니다. 일반적으로 사용되는 접근 방식 중 하나는 subprocess 모듈을 select 모듈과 함께 사용하는 것입니다.
Non-Blocking Tailing:
Linux 환경에서 작업할 때 다음을 활용할 수 있습니다. tail 명령을 실행하는 하위 프로세스의 출력 파이프를 폴링하려면 모듈을 선택하세요. 예는 다음과 같습니다.
import time import subprocess import select f = subprocess.Popen(['tail', '-F', filename], stdout=subprocess.PIPE, stderr=subprocess.PIPE) p = select.poll() p.register(f.stdout) while True: if p.poll(1): print(f.stdout.readline()) time.sleep(1)
이 코드는 select.poll() 메서드를 사용하여 출력 파이프에 사용 가능한 새 데이터가 있는지 확인합니다. 새 줄이 감지되면 인쇄합니다.
Blocking Tailing:
간단한 구현을 위해 select 모듈 없이 subprocess 모듈을 사용할 수 있습니다. 하지만 이 메서드는 tail 프로세스가 종료될 때까지 스크립트를 차단합니다.
import subprocess f = subprocess.Popen(['tail', '-F', filename], stdout=subprocess.PIPE, stderr=subprocess.PIPE) while True: line = f.stdout.readline() print(line)
이 코드는 새 줄이 나타나는 대로 읽고 인쇄하지만 tail 프로세스가 종료될 때까지 차단됩니다.
위 내용은 차단하지 않고 Python에서 로그 파일을 추적하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!