Spaces:
Sleeping
Sleeping
Costo real de procesamiento son 6 segundos
Browse files- globales.py +1 -1
- stats.py +78 -0
- 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 =
|
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.")
|