You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Python打开并解析Graphite的.wsp(Whisper)格式文件?

Parsing Whisper (.wsp) Files with Python

Absolutely! You can definitely parse Whisper (.wsp) files directly with Python—this is a go-to approach when you want to work with raw time-series data stored in Whisper’s compact format, instead of relying solely on Graphite’s built-in plotting tools. The official Graphite team maintains a Python library specifically for interacting with Whisper files, making this straightforward.

Step 1: Install the Correct Library

First, install the graphite-whisper package (note: avoid the generic whisper package, which is for speech recognition):

pip install graphite-whisper

Step 2: Basic Data Retrieval Example

Here’s a simple script to read temperature sensor data from a .wsp file, convert timestamps to human-readable dates, and output the results:

import whisper
import datetime

# Replace with your actual .wsp file path
wsp_file_path = "/opt/graphite/storage/whisper/temperature/sensor1.wsp"

# Fetch all data from the earliest record to now
start_timestamp = 0
end_timestamp = int(datetime.datetime.now().timestamp())
time_metadata, values = whisper.fetch(wsp_file_path, start_timestamp, end_timestamp)

# Unpack time range details
start_time, end_time, interval = time_metadata

# Convert timestamps to readable dates and pair with values
sensor_readings = []
for i, timestamp in enumerate(range(start_time, end_time, interval)):
    reading_time = datetime.datetime.fromtimestamp(timestamp)
    temperature = values[i]
    # Skip missing data points (marked as None)
    if temperature is not None:
        sensor_readings.append((reading_time, round(temperature, 2)))

# Print the first 10 entries to verify
print("Latest Temperature Readings:")
for time, temp in sensor_readings[-10:]:
    print(f"{time.strftime('%Y-%m-%d %H:%M')}: {temp}°C")

Step 3: Advanced Operations

Get File Metadata (Retention Policies, Aggregation Rules)

You can inspect how Whisper is storing your data (like retention periods or aggregation methods) with:

metadata = whisper.info(wsp_file_path)
print("Whisper File Metadata:")
print(f"Retention Policies: {metadata['retentions']}")
print(f"Aggregation Method: {metadata['aggregationMethod']}")
print(f"X-Files Factor (data completeness threshold): {metadata['xFilesFactor']}")

Fetch a Specific Time Range

If you only want data from the last 7 days, adjust the fetch parameters:

now = int(datetime.datetime.now().timestamp())
seven_days_ago = now - (7 * 24 * 60 * 60)

time_metadata, weekly_values = whisper.fetch(wsp_file_path, seven_days_ago, now)

Why This Works

Whisper is a file-based time-series database built for Graphite, and the graphite-whisper library provides full low-level access to read (and even write) data directly from .wsp files. This lets you pull raw sensor data into your Python scripts for custom plotting, analysis, or integration with other tools—no need to go through Graphite’s API or frontend.

内容的提问来源于stack exchange,提问作者SuperCiocia

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 08:20:07