Moibe commited on
Commit
5a31539
·
1 Parent(s): fcaf3e9

Costo real de procesamiento son 6 segundos

Browse files
Files changed (3) hide show
  1. globales.py +1 -1
  2. stats.py +78 -0
  3. stats2.py +74 -0
globales.py CHANGED
@@ -9,6 +9,6 @@ inferencia = "black-forest-labs/FLUX.1-dev"
9
  inferencia_backup = "black-forest-labs/FLUX.1-schnell"
10
  proveedor = "hf-inference" #falai
11
  proveedor_back = "fal-ai"
12
- work_cost = 1 #Los segundos que cuesta la generación de una imagen, para control de la capa gratuita.
13
  inference_cost = 1
14
  quota = 1500
 
9
  inferencia_backup = "black-forest-labs/FLUX.1-schnell"
10
  proveedor = "hf-inference" #falai
11
  proveedor_back = "fal-ai"
12
+ work_cost = 6 #Los segundos que cuesta la generación de una imagen, para control de la capa gratuita.
13
  inference_cost = 1
14
  quota = 1500
stats.py ADDED
@@ -0,0 +1,78 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from firebase_admin import credentials, firestore
2
+ import firebase_admin
3
+ from datetime import datetime
4
+ from collections import Counter
5
+
6
+ # # --- Inicialización de Firebase (asegúrate de que esto se ejecute una sola vez) ---
7
+ if not firebase_admin._apps:
8
+ try:
9
+ firebase_cred = credentials.Certificate('archivos/config.json')
10
+ firebase_admin.initialize_app(firebase_cred)
11
+ print("Firebase Admin SDK inicializada exitosamente.")
12
+ except Exception as e:
13
+ print(f"Error al inicializar Firebase Admin SDK: {e}")
14
+ exit()
15
+
16
+ db = firestore.client(database_id='nowme')
17
+
18
+
19
+ def sacar_estadistica_horas(coleccion_nombre):
20
+ """
21
+ Analiza la hora de creación de los documentos en una colección
22
+ y devuelve un recuento de cuántos documentos se crearon en cada hora del día.
23
+
24
+ Args:
25
+ coleccion_nombre (str): El nombre de la colección a analizar.
26
+
27
+ Returns:
28
+ dict: Un diccionario donde las claves son las horas (0-23) y los
29
+ valores son el número de documentos creados en esa hora.
30
+ """
31
+ print(f"\n--- Sacando estadísticas de creación por hora en la colección '{coleccion_nombre}' ---")
32
+
33
+ # 1. Obtener todos los documentos de la colección
34
+ # Es importante que el campo `timestamp_creacion` exista en todos.
35
+ try:
36
+ docs = db.collection(coleccion_nombre).stream()
37
+
38
+ # 2. Extraer la hora de cada timestamp
39
+ horas_creacion = []
40
+ for doc in docs:
41
+ doc_data = doc.to_dict()
42
+ if 'timestamp_creacion' in doc_data and doc_data['timestamp_creacion'] is not None:
43
+ # Firestore `SERVER_TIMESTAMP` se convierte a un objeto datetime en Python
44
+ timestamp = doc_data['timestamp_creacion']
45
+ hora = timestamp.hour # Obtenemos solo la hora (de 0 a 23)
46
+ horas_creacion.append(hora)
47
+
48
+ if not horas_creacion:
49
+ print("❌ No se encontraron timestamps de creación para analizar.")
50
+ return {}
51
+
52
+ # 3. Contar la frecuencia de cada hora
53
+ # `Counter` es perfecto para esto, cuenta las repeticiones de los elementos en una lista
54
+ conteo_horas = Counter(horas_creacion)
55
+
56
+ # Opcional: ordenar los resultados por hora
57
+ resultados_ordenados = dict(sorted(conteo_horas.items()))
58
+
59
+ print("✔️ Estadísticas de creación por hora calculadas.")
60
+ return resultados_ordenados
61
+
62
+ except Exception as e:
63
+ print(f"❌ Error al sacar las estadísticas: {e}")
64
+ return {}
65
+
66
+ # --- Ejemplo de uso ---
67
+ if __name__ == "__main__":
68
+ # Asegúrate de que tu colección 'logs' exista y tenga documentos con 'timestamp_creacion'
69
+ # Esta función leerá TODOS los documentos de la colección, tenlo en cuenta para el costo si es muy grande.
70
+ estadisticas = sacar_estadistica_horas('logs')
71
+
72
+ if estadisticas:
73
+ print("\n--- Conteo de documentos creados por hora ---")
74
+ for hora, cantidad in estadisticas.items():
75
+ # Formateamos la hora para una mejor visualización
76
+ print(f" Hora {hora:02d}:00 - {hora:02d}:59 -> {cantidad} documentos")
77
+ else:
78
+ print("\nNo se pudieron generar las estadísticas.")
stats2.py ADDED
@@ -0,0 +1,74 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from firebase_admin import credentials, firestore
2
+ import firebase_admin
3
+ from collections import Counter
4
+ from datetime import datetime
5
+
6
+ # # --- Inicialización de Firebase (asegúrate de que esto se ejecute una sola vez) ---
7
+ if not firebase_admin._apps:
8
+ try:
9
+ firebase_cred = credentials.Certificate('archivos/config.json')
10
+ firebase_admin.initialize_app(firebase_cred)
11
+ print("Firebase Admin SDK inicializada exitosamente.")
12
+ except Exception as e:
13
+ print(f"Error al inicializar Firebase Admin SDK: {e}")
14
+ exit()
15
+
16
+ db = firestore.client(database_id='nowme')
17
+
18
+ def sacar_estadistica_horas_filtrada(coleccion_nombre):
19
+ """
20
+ Analiza la hora de creación de los documentos en una colección
21
+ y devuelve un recuento de cuántos documentos se crearon en cada hora del día,
22
+ excluyendo aquellos cuyo campo 'servidor' sea 'buzzword' y tengan un timestamp.
23
+
24
+ Args:
25
+ coleccion_nombre (str): El nombre de la colección a analizar.
26
+
27
+ Returns:
28
+ dict: Un diccionario donde las claves son las horas (0-23) y los
29
+ valores son el número de documentos creados en esa hora.
30
+ """
31
+ print(f"\n--- Sacando estadísticas de creación por hora en la colección '{coleccion_nombre}' ---")
32
+
33
+ try:
34
+ # 1. Obtener los documentos que cumplen el filtro de exclusión principal
35
+ docs_filtrados = db.collection(coleccion_nombre).where(
36
+ filter=firestore.FieldFilter('servidor', '!=', 'buzzword')
37
+ ).stream()
38
+
39
+ # 2. Extraer la hora de cada timestamp, filtrando en Python
40
+ horas_creacion = []
41
+ for doc in docs_filtrados:
42
+ doc_data = doc.to_dict()
43
+ # Filtramos en el código de Python
44
+ if 'timestamp_creacion' in doc_data and doc_data['timestamp_creacion'] is not None:
45
+ timestamp = doc_data['timestamp_creacion']
46
+ hora = timestamp.hour
47
+ horas_creacion.append(hora)
48
+
49
+ if not horas_creacion:
50
+ print("❌ No se encontraron timestamps de creación para analizar después de aplicar el filtro.")
51
+ return {}
52
+
53
+ # 3. Contar la frecuencia de cada hora
54
+ conteo_horas = Counter(horas_creacion)
55
+ resultados_ordenados = dict(sorted(conteo_horas.items()))
56
+
57
+ print("✔️ Estadísticas de creación por hora calculadas.")
58
+ return resultados_ordenados
59
+
60
+ except Exception as e:
61
+ print(f"❌ Error al sacar las estadísticas: {e}")
62
+ return {}
63
+
64
+ # --- Ejemplo de uso ---
65
+ if __name__ == "__main__":
66
+ # Asegúrate de que tu colección 'logs' exista y tenga documentos con los campos necesarios
67
+ estadisticas_filtradas = sacar_estadistica_horas_filtrada('logs')
68
+
69
+ if estadisticas_filtradas:
70
+ print("\n--- Conteo de documentos creados por hora (sin 'buzzword') ---")
71
+ for hora, cantidad in estadisticas_filtradas.items():
72
+ print(f" Hora {hora:02d}:00 - {hora:02d}:59 -> {cantidad} documentos")
73
+ else:
74
+ print("\nNo se pudieron generar las estadísticas.")