[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
|
from pathlib import Path
|
||||||
|
|
||||||
# Configuración de logging
|
# Configuración de logging
|
||||||
logging.basicConfig(
|
# Por defecto, establecemos nivel WARNING para la consola (solo errores y advertencias)
|
||||||
level=logging.INFO,
|
console_handler = logging.StreamHandler()
|
||||||
format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
|
console_handler.setLevel(logging.WARNING)
|
||||||
handlers=[logging.StreamHandler()]
|
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 = 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
|
# Verificar si pycountry está instalado, si no, instalarlo
|
||||||
def check_install_pycountry():
|
def check_install_pycountry():
|
||||||
|
@ -458,6 +464,14 @@ def get_fallback_rate(programmer_type, region_code):
|
||||||
|
|
||||||
return round(adjusted_rate, 2)
|
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():
|
def update_rate_files():
|
||||||
"""Actualiza los archivos de tarifas con datos de Perplexity."""
|
"""Actualiza los archivos de tarifas con datos de Perplexity."""
|
||||||
# Obtener modelo configurado
|
# 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
|
# 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:
|
with open(rate_file, 'w', encoding='utf-8') as f:
|
||||||
f.write(f"{rate:.2f}")
|
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}")
|
logger.info(f"Actualizado {os.path.basename(rate_file)} con valor: {rate:.2f}")
|
||||||
|
show_result(result_message)
|
||||||
|
|
||||||
if __name__ == "__main__":
|
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...")
|
logger.info("Iniciando actualización de tarifas...")
|
||||||
|
|
||||||
|
if not args.quiet:
|
||||||
|
print("Actualizando tarifas...")
|
||||||
|
|
||||||
# Verificar e instalar pycountry si es necesario
|
# Verificar e instalar pycountry si es necesario
|
||||||
pycountry_available = check_install_pycountry()
|
pycountry_available = check_install_pycountry()
|
||||||
|
|
||||||
|
@ -555,7 +590,14 @@ if __name__ == "__main__":
|
||||||
else:
|
else:
|
||||||
logger.info("Usando lista interna para validación básica de códigos de país.")
|
logger.info("Usando lista interna para validación básica de códigos de país.")
|
||||||
|
|
||||||
# Actualizar los archivos de tarifas
|
try:
|
||||||
update_rate_files()
|
# Actualizar los archivos de tarifas
|
||||||
|
update_rate_files()
|
||||||
logger.info("Proceso de actualización de tarifas completado.")
|
|
||||||
|
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