Crear una alerta de tipo de cambio en Python con USD/IDR
Crea un monitor con la biblioteca estándar de Python que avise una vez al superar un umbral, guarde su estado y respete la frescura y los límites de la API.
Una alerta debe comparar cada observación efectiva nueva con la anterior, no cada consulta HTTP con la consulta anterior. La primera observación crea una base, los datos antiguos y los errores no cambian el estado, y solo un cruce válido produce un aviso.
sources["IDR"] y effective_at["IDR"] para juzgar el dato de IDR. Los campos globales son un resumen conservador de todas las monedas solicitadas.os.replace. Así una interrupción no deja una base incompleta.EXCHANGERATE_API_KEY y espera al menos 60 segundos entre consultas. En 429 conserva el estado y respeta Retry-After.Modela la observación por moneda
Usa sources["IDR"] y effective_at["IDR"] para juzgar el dato de IDR. Los campos globales son un resumen conservador de todas las monedas solicitadas.
Define la política de cruce
La primera observación válida solo crea una base. Tras un cruce, desarma la alerta y vuelve a armarla únicamente cuando una observación válida posterior regrese por debajo del umbral.
Guarda el estado de forma segura
Escribe el JSON en un archivo temporal, usa modo 0600 y reemplaza el archivo con os.replace. Así una interrupción no deja una base incompleta.
Limita red y cuota
Usa un timeout de diez segundos, conserva la clave en EXCHANGERATE_API_KEY y espera al menos 60 segundos entre consultas. En 429 conserva el estado y respeta Retry-After. El valor predeterminado de cinco minutos consume unas 8.640 llamadas en 30 días; un intervalo de 60 segundos consume unas 43.200 y puede superar la cuota compartida.
EXCHANGERATE_API_KEY y espera al menos 60 segundos entre consultas. En 429 conserva el estado y respeta Retry-After.Ejecuta el monitor completo
Descarga el script completo, configura el umbral y la ruta de estado fuera del control de versiones. Solo imprime en la consola; no envía mensajes externos. La edad máxima predeterminada es una hora. Configura FX_ALERT_MAX_AGE_SECONDS si aceptas una referencia diaria o un mercado cerrado. python-exchange-rate-alerts.py
Prueba la política sin esperar al mercado
Prueba la primera observación, un movimiento menor, un cruce, una marca temporal repetida, datos antiguos, el rearme y un segundo cruce mediante un mock de red.