[IMPROVED] Optimizar la salida de consola en rate_update.py
- Modificar el nivel de log para mostrar solo errores y resultados importantes - Añadir función show_result para controlar la salida de resultados - Agregar opciones de línea de comandos para controlar verbosidad (-v, -q) - Mostrar solo el valor guardado para cada archivo procesado - Añadir manejo de errores global para mejor experiencia de usuario - Proporcionar retroalimentación clara sobre éxito o fracaso 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
parent
a392607365
commit
c8567a75b0
1 changed files with 51 additions and 9 deletions
|
@ -23,12 +23,18 @@ import time
|
|||
from pathlib import Path
|
||||
|
||||
# Configuración de logging
|
||||
logging.basicConfig(
|
||||
level=logging.INFO,
|
||||
format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
|
||||
handlers=[logging.StreamHandler()]
|
||||
)
|
||||
# Por defecto, establecemos nivel WARNING para la consola (solo errores y advertencias)
|
||||
console_handler = logging.StreamHandler()
|
||||
console_handler.setLevel(logging.WARNING)
|
||||
console_handler.setFormatter(logging.Formatter('%(levelname)s: %(message)s'))
|
||||
|
||||
# Configuración global del logger
|
||||
logging.basicConfig(level=logging.DEBUG, format='%(asctime)s - %(name)s - %(levelname)s - %(message)s', handlers=[])
|
||||
logger = logging.getLogger('rate_update')
|
||||
logger.addHandler(console_handler)
|
||||
|
||||
# Variable para controlar si se muestra el resultado en la consola
|
||||
SHOW_RESULTS = True
|
||||
|
||||
# Verificar si pycountry está instalado, si no, instalarlo
|
||||
def check_install_pycountry():
|
||||
|
@ -458,6 +464,14 @@ def get_fallback_rate(programmer_type, region_code):
|
|||
|
||||
return round(adjusted_rate, 2)
|
||||
|
||||
def show_result(message):
|
||||
"""
|
||||
Función para mostrar resultados en la consola.
|
||||
Solo muestra mensajes si SHOW_RESULTS es True.
|
||||
"""
|
||||
if SHOW_RESULTS:
|
||||
print(message)
|
||||
|
||||
def update_rate_files():
|
||||
"""Actualiza los archivos de tarifas con datos de Perplexity."""
|
||||
# Obtener modelo configurado
|
||||
|
@ -537,12 +551,33 @@ def update_rate_files():
|
|||
# Guardar el resultado en el archivo - solo el valor numérico con dos decimales, sin salto de línea
|
||||
with open(rate_file, 'w', encoding='utf-8') as f:
|
||||
f.write(f"{rate:.2f}")
|
||||
|
||||
# Registrar en el log y mostrar el resultado en la consola
|
||||
result_message = f"Tarifa para {programmer_type}" + (f" en región {region_code}" if region_code else "") + f": {rate:.2f} USD"
|
||||
logger.info(f"Actualizado {os.path.basename(rate_file)} con valor: {rate:.2f}")
|
||||
show_result(result_message)
|
||||
|
||||
if __name__ == "__main__":
|
||||
# Parámetros de línea de comandos para controlar el comportamiento
|
||||
import argparse
|
||||
parser = argparse.ArgumentParser(description='Actualiza tarifas por hora de diferentes tipos de programadores.')
|
||||
parser.add_argument('-q', '--quiet', action='store_true', help='No mostrar resultados individuales')
|
||||
parser.add_argument('-v', '--verbose', action='store_true', help='Mostrar información detallada del proceso')
|
||||
args = parser.parse_args()
|
||||
|
||||
# Configurar nivel de log según parámetros
|
||||
if args.verbose:
|
||||
console_handler.setLevel(logging.INFO)
|
||||
|
||||
# Configurar si se muestran resultados
|
||||
global SHOW_RESULTS
|
||||
SHOW_RESULTS = not args.quiet
|
||||
|
||||
logger.info("Iniciando actualización de tarifas...")
|
||||
|
||||
if not args.quiet:
|
||||
print("Actualizando tarifas...")
|
||||
|
||||
# Verificar e instalar pycountry si es necesario
|
||||
pycountry_available = check_install_pycountry()
|
||||
|
||||
|
@ -555,7 +590,14 @@ if __name__ == "__main__":
|
|||
else:
|
||||
logger.info("Usando lista interna para validación básica de códigos de país.")
|
||||
|
||||
# Actualizar los archivos de tarifas
|
||||
update_rate_files()
|
||||
|
||||
logger.info("Proceso de actualización de tarifas completado.")
|
||||
try:
|
||||
# Actualizar los archivos de tarifas
|
||||
update_rate_files()
|
||||
|
||||
if not args.quiet:
|
||||
print("Proceso de actualización de tarifas completado exitosamente.")
|
||||
logger.info("Proceso de actualización de tarifas completado.")
|
||||
except Exception as e:
|
||||
logger.error(f"Error durante la actualización de tarifas: {e}")
|
||||
print(f"ERROR: {e}")
|
||||
sys.exit(1)
|
Loading…
Reference in a new issue