Comprobación de disponibilidad webDesarrollo y personalización

Un script de Python que comprueba que su web responde y le avisa por correo desde su propio buzón cuando se cae

Suele estar listo en 15 minutosCambios incluidosControl de calidad
Paquetes
Protección de pagoDetalles
  • Los cambios dentro del paquete son gratuitos.
  • Si no responde en los 3 días siguientes a la entrega, el trabajo se acepta automáticamente.

El dinero queda reservado al pagar y solo se libera cuando usted acepta el trabajo.

Un script de Python que comprueba que su web responde y le avisa por correo desde su propio buzón cuando se cae

Ejemplo de resultado

Ejemplo del paquete Estándar

Unir los archivos de ventas mensuales de 9 tiendas en un único informe de Excel

Cómo se ejecuta

python merge_sales.py --month 2026-10
2026-11-02 09:14:03 INFO  Carpeta: sales/2026-10, 9 archivos encontrados
2026-11-02 09:14:03 INFO  shop-01.csv: 1.284 filas
2026-11-02 09:14:04 INFO  shop-02.xlsx: 967 filas
2026-11-02 09:14:04 WARN  shop-07.csv: 3 filas sin precio omitidas (líneas 88, 412, 913)
2026-11-02 09:14:05 INFO  Listo: 10.412 filas -> report-2026-10.xlsx (hojas “Ventas” y “Totales”)

Configuración, no código

Los nombres de columna de cada tienda están en settings.ini, así que una tienda nueva o una columna renombrada es una línea ahí:

[columns]
date = Fecha, Fecha de venta, Día
product = Producto, Artículo, Nombre
quantity = Cant., Cantidad, Uds.
price = Precio, Precio unitario

Una parte del código

def read_shop_file(path: Path, columns: dict[str, list[str]]) -> pd.DataFrame:
    """Lee el archivo de una tienda y le da los nombres de columna del informe."""
    table = pd.read_excel(path) if path.suffix == ".xlsx" else pd.read_csv(path, encoding="utf-8-sig")
    renamed = {}
    for name, variants in columns.items():
        found = next((c for c in table.columns if c.strip() in variants), None)
        if found is None:
            raise ReportError(f"{path.name}: no hay columna para '{name}' (se buscó {', '.join(variants)})")
        renamed[found] = name
    table = table.rename(columns=renamed)[list(columns)]
    table["shop"] = path.stem
    return table

Archivos: un archivo ZIP con merge_sales.py (310 líneas), settings.ini, requirements.txt y un README sobre cómo instalar Python, ejecutar el script y qué significa cada mensaje del registro. El cliente lo ejecuta en su propio ordenador.

Cliente: una pequeña cadena de 9 papelerías; cada tienda envía sus ventas del mes en un archivo CSV o Excel, con nombres de columna ligeramente distintos. Tarea: un único script que lea todos los archivos de una carpeta, dé a las columnas un mismo formato y genere un solo informe de Excel con todas las ventas y una hoja de totales por tienda.

El cliente y todos los datos son ficticios.

Acerca de este servicio

Si su tienda o su web de reservas se cae de noche, puede que solo se entere por un cliente a la mañana siguiente. Este script de Python abre las páginas que indique cada pocos minutos y le envía un correo cuando una deja de responder, devuelve un error o, desde Estándar, carga sin una palabra que debe estar, como su botón Añadir al carrito. Vuelve a intentarlo antes de dar la alarma, para que una sola respuesta lenta no le despierte, y le escribe de nuevo cuando la web vuelve. Los correos salen de su propia cuenta de correo; usted mismo pone su contraseña de envío en la configuración. Ejecútelo en un ordenador o servidor que permanezca encendido y que no sea donde está su web, o se quedará en silencio junto con la web. Le avisa de un problema; no lo soluciona.

Qué incluye

  • Qué recibeUn archivo ZIP con el script de Python, un README con instrucciones paso a paso y, desde Estándar, un archivo de configuración con direcciones y ajustes de correo; el código también se muestra en la página del pedido.
  • Caída y recuperaciónUn correo cuando falla y otro cuando vuelve
  • Sin falsas alarmasReintenta antes de escribirle
  • Comprobación del contenido de la páginaDesde Estándar, una palabra que debe estar en la página
  • Desde su buzónSu propia cuenta de correo, con la contraseña fuera del código
  • Código legibleCon comentarios, fácil añadir una página más adelante

Cómo funciona

  1. 1
    TareaUsted indica las páginas que vigilar y adónde deben ir los avisos
  2. 2
    CódigoEscribimos el script y la guía para ejecutarlo
  3. 3
    PruébeloLo ejecuta con una página que no existe para ver llegar un aviso
  4. 4
    CambiosPide cambios dentro de su paquete y nos envía cualquier mensaje de error

Qué necesitamos de usted

Las direcciones que vigilar (página de inicio, carrito, página de reservas), con qué frecuencia comprobarlas y, desde Estándar, una palabra o frase que debe mostrar cada página. Adónde deben ir los avisos y qué cuenta de correo los envía (nos basta el nombre de su proveedor para describir sus ajustes de envío; la contraseña la introduce usted). Dónde se ejecutará el script: un ordenador que permanezca encendido o un servidor, con su sistema (Windows, macOS o Linux).

Le preguntaremos:

  • ¿Qué páginas debe vigilar?
  • ¿Con qué frecuencia, y qué cuenta como caída?
  • ¿Adónde deben ir los avisos?
  • ¿Dónde se ejecutará?

Comparar paquetes

PaquetesBásicoUna web, un aviso16 US$EstándarComprobaciones con configuración33 US$PremiumHerramienta de disponibilidad67 US$
Plazo1 día2 días3 días
Cambios123
Códigohasta 150 líneashasta 400 líneashasta 1.000 líneas
Archivos de código1hasta 3hasta 8
Archivo de configuraciónNoSíSí
Mensajes de error claros y registroNoSíSí
Opciones de ejecución y guía para ejecutarlo de forma programadaNoNoSí
Guía de instalación y uso (README)SíSíSí
LenguajePythonPythonPython
Hacer pedido BásicoHacer pedido EstándarHacer pedido Premium

Protección de pago

Usted paga al hacer el pedido, pero el dinero solo se libera por un trabajo aceptado.

  • Precio fijoEl precio del paquete no cambia después del pago.
  • El dinero queda reservadoAl pagar, el importe solo queda reservado. Pasa a Dleex cuando usted acepta el trabajo.
  • Revisado antes de la entregaCada resultado pasa un control de calidad antes de llegar a usted, y lo ve en la página del pedido antes de aceptarlo.
  • Cambios gratuitosSolicite cambios dentro de su brief tantas veces como permita el paquete.
  • Aceptación a los 3 díasSi en los 3 días siguientes a la entrega no acepta el trabajo ni solicita cambios, se acepta automáticamente. Si escribe en el chat del pedido después de la entrega, el pedido queda en espera; cuando le respondamos, podremos reiniciar el plazo de 3 días y se lo indicaremos en el chat.
  • Rehacer el trabajo o reembolso totalSi el resultado no se ajusta a su brief y los cambios no lo resolvieron, o el trabajo tarda más del doble de su plazo, escriba en el chat del pedido: rehacemos el trabajo o le reembolsamos el pago íntegro.
Cómo funciona →

Preguntas y respuestas

¿Dónde debo ejecutarlo?

En una máquina siempre encendida y separada de su web, como un ordenador de la oficina, un miniservidor doméstico o un pequeño servidor alquilado. Si se ejecuta en el mismo servidor que la web, cae con ella y no puede avisarle.

¿Puede enviar un SMS en lugar de un correo?

Esta oferta envía correos. Muchos móviles pueden mostrar un correo como aviso; un mensaje a un servicio con API pública puede añadirse dentro de su paquete, con su propia clave en la configuración.

¿Comprobará la velocidad o la seguridad de mi web?

Mide cuánto tarda en responder cada página y, en Premium, avisa por encima de su límite. No prueba la seguridad, no busca virus ni inicia sesión en páginas de administración.

¿Cuántos correos puede enviar?

Solo escribe cuando algo cambia: una vez cuando una página falla y otra cuando vuelve, así que se mantiene muy por debajo de los límites de envío de su servicio de correo.

¿No encontró su respuesta?

Paquetes