首頁  >  文章  >  後端開發  >  如何在 Python 中尾隨日誌檔案而不阻塞?

如何在 Python 中尾隨日誌檔案而不阻塞?

Linda Hamilton
Linda Hamilton原創
2024-11-16 07:19:03850瀏覽

How Can I Tail Log Files in Python Without Blocking?

Python Tail:無阻塞地追蹤日誌檔案

在Python中,可以使用各種方法實現無阻塞或鎖定地追蹤日誌文件。常用的方法是將 subprocess 模組與 select 模組結合使用。

非阻塞尾部:

在 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() 方法來檢查輸出管道上是否有新資料可用。當它偵測到新行時,它會列印它們。

阻止拖尾:

為了更簡單的實現,您可以使用 subprocess 模組而不使用 select 模組。但是,此方法會阻塞腳本,直到尾進程關閉。

import subprocess
f = subprocess.Popen(['tail', '-F', filename],
                   stdout=subprocess.PIPE, stderr=subprocess.PIPE)
while True:
    line = f.stdout.readline()
    print(line)

此程式碼會在出現新行時讀取並列印新行,但它會阻塞直到尾進程終止。

以上是如何在 Python 中尾隨日誌檔案而不阻塞?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn