Logga in Hem API-dokument Agent Delning Integritet Support
Get Pling
iPhone-app macOS-agent (.dmg) Linux Windows GitHub

Hem / Dokumentation / Python

Skicka push-aviseringar från Python

Lång träningskörning, nattlig ETL eller ett skript som ibland kraschar klockan 3 på natten? Skicka dig själv en iPhone-push från Python med ett enda requests.post till Pling-API:et. Nedan: en enradare, en återanvändbar hjälpfunktion, avisering vid undantag, en standardbiblioteksversion utan beroenden samt krokar för Django och Flask.

Den minimala versionen

Med requests är det ett enda anrop:

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",
})

En återanvändbar hjälpare

Läs token från miljön och kapsla in anropet så att resten av din kod hålls ren:

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")

Avisera mig när den kraschar

Omslut jobbet, skicka undantaget och kasta om det så att dina loggar fortfarande får hela stackspårningen:

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

Inga beroenden (standardbiblioteket)

Om du inte kan lägga till requests fungerar den inbyggda urllib överallt där Python gör det:

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)

Felaviseringar för Django och Flask

Skicka serverfel till din telefon i samma ögonblick som de inträffar. I Flask:

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

I Django anropar du samma hjälpfunktion från en loggningshanterare eller en anpassad 500-vy, så att undantag i produktion når din telefon utan att behöva vänta på e-post.

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 API-dokument.

Vanliga frågor

Behöver jag requests-biblioteket?

Nej. requests är det mest läsbara alternativet, men versionen med urllib.request från standardbiblioteket nedan har noll beroenden och är praktisk inuti Docker-avbildningar eller begränsade miljöer.

Hur blir jag pingad när mitt skript kraschar?

Omslut koden med try / except och anropa hjälpfunktionen från except-blocket med felets text, och kasta sedan om felet. Du får sammanfattningen av stackspårningen på din telefon och ser fortfarande hela kraschen i dina loggar.

Kan jag använda detta i Django eller Flask?

Ja. Anropa hjälpfunktionen från en Django-500-hanterare eller -signal, eller från en Flask-errorhandler, för att skicka serverfel till din telefon när de inträffar. Se exemplet nedan.

Var förvarar jag token?

Läs den från en miljövariabel som PLING_TOKEN i stället för att hårdkoda den, och håll den utanför versionshanteringen.

Fler recept: GitHub Actions · Cron-jobb · fullständig API-referens