Skip to main content

Simple Tracker(Redis)

Simple Tracker 是一个基于 Redis 的轻量级计数跟踪系统,支持按分钟、小时、天三种时间粒度对项目进行计数统计。

功能特点

  • 支持多种时间粒度跟踪:分钟(m)、小时(h)、天(d)
  • 自动过期机制,避免数据无限增长
  • 同步和异步两种实现方式
  • 提供装饰器模式方便集成

核心组件

ItemTracker (同步版本)

from tracker import ItemTracker

# 初始化
tracker = ItemTracker(redis_client, tracker_name="my_tracker")

# 跟踪项目出现次数
tracker.track_item_occurrence("item_name")

# 获取指定时间粒度的计数
count = tracker.get_item_count("item_name", "h")  # 按小时统计

# 获取分布统计
distribution = tracker.get_count_distribution("d")  # 按天获取分布

AsyncItemTracker (异步版本)

from tracker import AsyncItemTracker

# 初始化
async_tracker = AsyncItemTracker(redis_client, tracker_name="my_tracker")

# 异步跟踪项目出现次数
await async_tracker.track_item_occurrence("item_name")

# 异步获取指定时间粒度的计数
count = await async_tracker.get_item_count("item_name", "h")

# 异步获取分布统计
distribution = await async_tracker.get_count_distribution("d")

使用装饰器模式

同步装饰器

from tracker import get_tracker

track_item = get_tracker(redis_client)

@track_item("api_call")
def my_function():
    pass

异步装饰器

from tracker import get_async_tracker

track_item = get_async_tracker(redis_client)

@track_item("api_call")
async def my_async_function():
    pass

数据存储结构

Redis 中的数据以以下格式存储:

{tracker_name}:{granularity}:{time_period} -> Hash {item_name: count}

例如:

my_tracker:h:2023120115 -> {"api_call": 25, "user_login": 10}

过期时间设置

  • 分钟级数据保留 60 分钟
  • 小时级数据保留 24 小时
  • 天级数据保留 14 天

返回数据格式

get_count_distribution 方法返回如下格式的数据:

[
  {
    "item_name": "api_call",
    "total_count": 25,
    "freq": "h",
    "period": "2023120115"
  }
]

Metadata

Release files for simple-tracker-redis 0.1.4

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for simple-tracker-redis 0.1.4
File Size Uploaded
simple_tracker_redis-0.1.4.tar.gz 4.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for simple-tracker-redis 0.1.4
File Interpreter ABI Platform
simple_tracker_redis-0.1.4-py3-none-any.whl Python 3 none any Details

Total release size: 8.8 kB

Release files / simple_tracker_redis-0.1.4.tar.gz

Download URL simple_tracker_redis-0.1.4.tar.gz
Size 4.2 kB
Tags Source
SHA-256 checksum
How to use checksums
37789bee4491779eae02cabb3e8a8dc2d768683d3c0bd21d55938580590cf7e9
BLAKE2b-256 checksum
How to use checksums
5ff4a37146db0345681b2bc91afb4492caa7cd6d5d1d7abad4494b5212d5d239
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.6.14

Release files / simple_tracker_redis-0.1.4-py3-none-any.whl

Download URL simple_tracker_redis-0.1.4-py3-none-any.whl
Size 4.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
1f51bc46542d0e5af375b574d0e6b526852e6d44295a5dfe0059c515a18c2f2d
BLAKE2b-256 checksum
How to use checksums
08d82e1133898e884541885bf0b14dd93fba3fe2ced4e4ff941ed77c1c170bb8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.6.14

Release history Release notifications | RSS feed

This release

0.1.4 This release

2 release files

0.1.3

2 release files

0.1.2

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page