Implementa un agente financiero que consulta información sobre la inflación en Argentina utilizando OpenAI y herramientas de Wikipedia y Yahoo Finance. Se define un flujo de trabajo en Prefect para gestionar la ejecución y el registro de mensajes enviados al modelo.
This commit is contained in:
@@ -0,0 +1,90 @@
|
||||
import psycopg2
|
||||
from psycopg2.extensions import ISOLATION_LEVEL_AUTOCOMMIT
|
||||
|
||||
def recreate_logs_table(conn_info, retention_days=30):
|
||||
"""
|
||||
Elimina y recrea la tabla 'logs' en TimescaleDB con configuración optimizada.
|
||||
Incluye:
|
||||
- Hypertable por 'timestamp'
|
||||
- Índices por service, timestamp y level
|
||||
- Políticas de compresión y retención automáticas
|
||||
"""
|
||||
|
||||
conn = psycopg2.connect(**conn_info)
|
||||
conn.set_isolation_level(ISOLATION_LEVEL_AUTOCOMMIT)
|
||||
cur = conn.cursor()
|
||||
|
||||
print("⚠️ Eliminando tabla 'logs' si existe...")
|
||||
cur.execute("DROP TABLE IF EXISTS logs CASCADE;")
|
||||
|
||||
print("🔧 Creando tabla 'logs'...")
|
||||
cur.execute("""
|
||||
CREATE TABLE logs (
|
||||
id BIGSERIAL,
|
||||
service TEXT NOT NULL,
|
||||
level TEXT NOT NULL,
|
||||
message TEXT NOT NULL,
|
||||
timestamp TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
||||
metadata JSONB
|
||||
);
|
||||
""")
|
||||
|
||||
print("🧱 Configurando hypertable 'logs'...")
|
||||
cur.execute("""
|
||||
SELECT create_hypertable('logs', 'timestamp', if_not_exists => TRUE);
|
||||
""")
|
||||
|
||||
print("⚡ Creando índices...")
|
||||
cur.execute("""
|
||||
CREATE INDEX IF NOT EXISTS idx_logs_service_timestamp
|
||||
ON logs (service, timestamp DESC);
|
||||
""")
|
||||
cur.execute("""
|
||||
CREATE INDEX IF NOT EXISTS idx_logs_level
|
||||
ON logs (level);
|
||||
""")
|
||||
cur.execute("""
|
||||
CREATE INDEX IF NOT EXISTS idx_logs_timestamp
|
||||
ON logs (timestamp DESC);
|
||||
""")
|
||||
|
||||
print("📦 Activando compresión...")
|
||||
cur.execute("""
|
||||
ALTER TABLE logs SET (
|
||||
timescaledb.compress,
|
||||
timescaledb.compress_segmentby = 'service'
|
||||
);
|
||||
""")
|
||||
|
||||
print("🗓️ Añadiendo políticas automáticas...")
|
||||
cur.execute("""
|
||||
SELECT add_compression_policy('logs', INTERVAL '7 days');
|
||||
""")
|
||||
cur.execute(f"""
|
||||
SELECT add_retention_policy('logs', INTERVAL '{retention_days} days');
|
||||
""")
|
||||
|
||||
|
||||
conn.commit()
|
||||
cur.close()
|
||||
conn.close()
|
||||
|
||||
print("✅ Tabla 'logs' recreada y configurada correctamente.")
|
||||
|
||||
|
||||
|
||||
# Ejecutar la configuración al ejecutar el script directamente
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
|
||||
|
||||
conn_info = {
|
||||
"dbname": "basededatos",
|
||||
"user": "postgres",
|
||||
"password": "mipassword",
|
||||
"host": "localhost",
|
||||
"port": 55432,
|
||||
}
|
||||
|
||||
recreate_logs_table(conn_info, retention_days=90)
|
||||
Reference in New Issue
Block a user