Iniciar sesión Inicio Documentación de la API Agente Compartir Privacidad Soporte
Get Pling
aplicación para iPhone agente para macOS (.dmg) Linux Windows GitHub

Inicio / Documentación / Python

Envía notificaciones push desde Python

¿Un entrenamiento largo, un ETL nocturno o un script que a veces falla a las 3 de la madrugada? Envíate una notificación push al iPhone desde Python con un solo requests.post a la API de Pling. A continuación: una línea, un asistente reutilizable, notificación ante excepciones, una versión con la biblioteca estándar sin dependencias, y enganches para Django y Flask.

La versión mínima

Con requests, es una sola llamada:

import requests

requests.post("https://api.plingpush.com/api/push", json={
    "token": "YOUR_TOKEN",
    "title": "Training finished",
    "message": "epoch 50, val_acc 0.94",
    "priority": "high",
})

Un ayudante reutilizable

Lee el token desde el entorno y envuelve la llamada para que el resto de tu código se mantenga limpio:

import os, requests

def pling(title, message="", priority="normal", url=None):
    payload = {"token": os.environ["PLING_TOKEN"], "title": title,
               "message": message, "priority": priority}
    if url:
        payload["url"] = url
    requests.post("https://api.plingpush.com/api/push", json=payload, timeout=10)

pling("ETL complete", "12,418 rows loaded")

Avísame cuando se bloquee

Envuelve la tarea, envía la excepción y relánzala para que tus registros sigan recibiendo el traceback completo:

try:
    run_nightly_job()
except Exception as e:
    pling("Nightly job crashed", f"{type(e).__name__}: {e}", priority="high")
    raise

Sin dependencias (biblioteca estándar)

Si no puedes añadir requests, el módulo integrado urllib funciona en cualquier lugar donde funcione Python:

import json, os, urllib.request

def pling(title, message="", priority="normal"):
    data = json.dumps({"token": os.environ["PLING_TOKEN"], "title": title,
                       "message": message, "priority": priority}).encode()
    req = urllib.request.Request("https://api.plingpush.com/api/push", data=data,
                                 headers={"Content-Type": "application/json"})
    urllib.request.urlopen(req, timeout=10)

Alertas de errores de Django y Flask

Envía los errores del servidor a tu teléfono en el momento en que ocurren. En Flask:

@app.errorhandler(500)
def on_error(e):
    pling("500 on the API", str(e), priority="high")
    return "Internal Server Error", 500

En Django, llama al mismo helper desde un controlador de registro o una vista 500 personalizada para que las excepciones de producción lleguen a tu teléfono sin esperar al correo electrónico.

Where to get your token: create an API token in the Pling app, or at plingpush.com/account. The full reference, including channels and priorities, is in the Documentación de la API.

Preguntas frecuentes

¿Necesito la librería requests?

No. requests es la opción más legible, pero la versión con urllib.request de la biblioteca estándar que aparece abajo no tiene ninguna dependencia y resulta práctica dentro de imágenes de Docker o en entornos restringidos.

¿Cómo recibo un aviso cuando mi script se cae?

Envuelve el cuerpo en try / except y llama al ayudante desde el bloque except con el texto de la excepción, luego relánzala. Recibes el resumen del traceback en tu teléfono y sigues viendo el fallo completo en tus registros.

¿Puedo usar esto en Django o Flask?

Sí. Llama al ayudante desde un controlador 500 de Django o una señal, o desde un errorhandler de Flask, para enviar los errores del servidor a tu teléfono a medida que ocurren. Consulta el ejemplo a continuación.

¿Dónde guardo el token?

Léelo desde una variable de entorno como PLING_TOKEN en lugar de codificarlo directamente, y mantenlo fuera del control de versiones.

Más recetas: GitHub Actions · Tareas cron · referencia completa de la API