Fix timing of async functions and make histogram finer at lower ranges
Some checks failed
Build Docker image / test (push) Successful in 4m34s
Build Docker image / build (push) Has been cancelled

This commit is contained in:
Roman Krček
2025-05-13 18:14:36 +02:00
parent 020a6271cf
commit b01a799a94
3 changed files with 8 additions and 5 deletions

View File

@@ -6,5 +6,6 @@ tiktok_downloader==0.3.5
uvloop==0.19.0 uvloop==0.19.0
tgcrypto==1.2.5 tgcrypto==1.2.5
prometheus-client==0.21.1 prometheus-client==0.21.1
prometheus-async==25.1.0
pydantic-settings==2.5.2 pydantic-settings==2.5.2
pydantic==2.9.2 pydantic==2.9.2

View File

@@ -1,10 +1,10 @@
from prometheus_client import Histogram, start_http_server from prometheus_client import Histogram, start_http_server
DOWNLOAD_DURATION = Histogram( DOWNLOAD_DURATION = Histogram(
'tt_download_time', 'download_time_seconds',
'Time taken to download a single tiktok video', 'Time taken to download a single media item',
['service'], ['service'],
buckets=[0.1, 0.5, 1, 2, 5, 10, 30, 60, 120] buckets=[0.1, 0.2, 0.5, 1, 2, 5, 10, 20, 50, 100]
) )
FILE_SIZE_BYTES = Histogram( FILE_SIZE_BYTES = Histogram(
@@ -13,6 +13,7 @@ FILE_SIZE_BYTES = Histogram(
['service'], ['service'],
buckets=[ buckets=[
1e6, # 1 MB 1e6, # 1 MB
2e6, # 2 MB
5e6, # 5 MB 5e6, # 5 MB
10e6, # 10 MB 10e6, # 10 MB
25e6, # 25 MB 25e6, # 25 MB

View File

@@ -4,6 +4,7 @@ import re
from datetime import datetime from datetime import datetime
from hashlib import sha256 from hashlib import sha256
from prometheus_async.aio import time as async_time
from pyrogram import Client from pyrogram import Client
from pyrogram.types import Message from pyrogram.types import Message
from tiktok_downloader import snaptik from tiktok_downloader import snaptik
@@ -59,7 +60,7 @@ def get_user_folder(message: Message) -> os.path:
return user_folder return user_folder
@DOWNLOAD_DURATION.labels(service='telegram').time() @async_time(DOWNLOAD_DURATION.labels(service='telegram'))
async def handle_media_message_contents(client: Client, async def handle_media_message_contents(client: Client,
message: Message): message: Message):
"""Detect what kind of media is being sent over from the user. """Detect what kind of media is being sent over from the user.
@@ -132,7 +133,7 @@ async def check_if_tt_downloaded(tt_hash: str) -> bool:
return tt_hash in all_tt_hashes return tt_hash in all_tt_hashes
@DOWNLOAD_DURATION.labels(service='tiktok').time() @async_time(DOWNLOAD_DURATION.labels(service='tiktok'))
async def download_tt_video(url: str) -> str: async def download_tt_video(url: str) -> str:
"""Downloads tiktok video from a given URL. """Downloads tiktok video from a given URL.
Makes sure the video integrity is correct.""" Makes sure the video integrity is correct."""