Erreichbarkeit einer Webseite prüfen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
DiDau
User
Beiträge: 5
Registriert: Samstag 2. Februar 2019, 11:28

Hallo in die Runde

Ich schaffe es leider nicht eine Webseite, die immer wieder ausfällt, zu überprüfen. Ich stelle mir vor, dass eine Routine im Hintergrund läuft, die in bestimmten Intervallen auf die Seite zugreift. Erhält sie eine positive Rückmeldung ist alles OK.

Ist die URL nicht erreichbar (ausgefallen), dann soll auf Windows eine Message-Box die Warnung nzeigen.

Mit welchem Modul lässt sich die Erreichbarkeit überprüfen?

Da ich neu in der Python-Programmierung bin, konnte ich mit keiner Dokumentation, das Problem lösen.
Ich benutze die neueste Version von Python (3.7.2, will auch dabei bleiben).

Kann mir jemand weiterhelfen?

Danke und Gruss
DiDau
nezzcarth
User
Beiträge: 1634
Registriert: Samstag 16. April 2011, 12:47

Gegenfrage: Hast du auf das System, auf dem die Website läuft, Zugriff?

Ansonsten kann man das z.B. mit dem requests-Modul lösen. Wenn die Seite nicht reagiert, gibt es eine Exception; zudem kannst du leicht auf 4xxer und 5xxer Status-Codes prüfen. Theoretisch reicht auch urllib aus der Standardbibliothek, requests ist m.M.n. aber komfortabler. Persönlich mag ich Skripte, die die ganze Zeit durchlaufen nicht gerne. Unter Linux würde ich das Skript (bzw. vmtl. eher curl, statt selbst was du basteln) mit einem Cronjob aufrufen, unter Windows gibt es sowas doch auch ("Aufgabenplanung"?).
Benutzeravatar
kbr
User
Beiträge: 1487
Registriert: Mittwoch 15. Oktober 2008, 09:27

Am besten wäre es ein Monitor-Skript auf dem Server selbst laufen zu lassen. Falls das nicht geht, würde ich auch requests empfehlen. Mit .get die Adresse ansprechen und ggf. einen timeout als Parameter mit angeben.
DiDau
User
Beiträge: 5
Registriert: Samstag 2. Februar 2019, 11:28

Besten Dank für die Rückmeldung

mit urllib.request habe ich es schon mal versucht und bin nicht weitergekommen.
Ich kann die Rückgabe (<urlopen error [Errno 11001] getaddrinfo failed> )nicht abfangen, wenn die Seite nicht erreicht wird.

Ich weiss nicht wie ich den Befehl einbette, dass ich die Rückmeldung abfange.
Bei existierender URL funktioniert, wenn nicht - was tun?

*******************************************
import urllib.request
html = ""
with urllib.request.urlopen('http://www.dich-gibt-es-nicht.com') as response:
html = response.read()

print(html)
*******************************************

Sorry - wahrscheinlich grundlegend die Frage.
Dennoch, Dank an Helfer!
DiDau
Sirius3
User
Beiträge: 17750
Registriert: Sonntag 21. Oktober 2012, 17:20

Das Stichwort ist ›Exception-Handling‹.
DiDau
User
Beiträge: 5
Registriert: Samstag 2. Februar 2019, 11:28

Excect: - Super, danke, damit bin ich weitergekommen,
hängt sich nicht mehr auf!
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

kbr hat geschrieben: Samstag 9. Februar 2019, 15:55 Am besten wäre es ein Monitor-Skript auf dem Server selbst laufen zu lassen.
Was wenn das Skript nicht läuft weil der Server down ist? Was wenn das Skript läuft und sagt dass alles ok ist aber die Webseite nicht erreichbar ist da es Netzwerk Probleme gibt?

Monitoring, zumindest dieser Art, macht man doch besser mit etwas Abstand.
Benutzeravatar
kbr
User
Beiträge: 1487
Registriert: Mittwoch 15. Oktober 2008, 09:27

Falls der OP noch weitere Server im gleichen oder in anderen Rechenzentren betreibt, oder dieses plant, lässt sich das ja einrichten. Mein Eindruck war, dass dies nicht der Fall ist.
Antworten