>백엔드 개발 >파이썬 튜토리얼 >차단하지 않고 Python에서 로그 파일을 추적하려면 어떻게 해야 합니까?

차단하지 않고 Python에서 로그 파일을 추적하려면 어떻게 해야 합니까?

Linda Hamilton
Linda Hamilton원래의
2024-11-16 07:19:03935검색

How Can I Tail Log Files in Python Without Blocking?

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.