Server-Error bei einem Request an Zope-Server

Django, Flask, Bottle, WSGI, CGI…
cybermat
User
Beiträge: 1
Registriert: Donnerstag 25. Januar 2007, 10:39

Server-Error bei einem Request an Zope-Server

Beitragvon cybermat » Donnerstag 25. Januar 2007, 11:06

Hi,

ich muss eine ganze Reihe von URLs auf ihre Erreichbarkeit prüfen. Dazu setze ich über die urllib2 einen Request an jede URL ab.
Anschließend veruche ich ein urlopen und fange ggf. die Fehler, die mir die urllib2 entgegenwirft und bekomme somit den entsprechenden HTTP-Status-Code. Wird kein Fehler geworfen, ist der Status 200 und somit allen in Ordnung.
Im Fehlerfall gebe ich mir den Code aus und noch ein paar Infos, was denn schief gelaufen ist.



Code: Alles auswählen

import urllib2, httplib

def checkURL(url):

    print 'URL: %s' % url

    rHeader = {"User-Agent": "Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1",
               "Accept": "text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5",
               "Accept-Language": "de-de,de;q=0.8,en-us;q=0.5,en;q=0.3",
               "Accept-Encoding": "gzip,deflate",
               "Accept-Charset": "ISO-8859-1,utf-8;q=0.7,*;q=0.7"}

    req = urllib2.Request(url.lower(), None, rHeader)
    try:
        urllib2.urlopen(req)
    except urllib2.URLError, e:
        try:
            print e.code
            print e.__class__
            print e           
            print e.info()
        except AttributeError, e:
            print 'kein Status'
    except httplib.socket.error, e:
        print '%s: %s' % (e[0], e[1])
    else:
        print '200'

    print '-----------'

urls = ['http://www.westpfalz-klinikum.de']

for url in urls:
    checkURL(url)


In diesem Beispielscript gebe ich das Ergebnis zu Testzwecken nur aus, sonst zähle ich für jeden Status einen Zähler hoch. Dieses Script tut eigentlich auch genau das, was es soll. Ich habe sehr viele URLs geprüft und das Ergebnis nochmal gegen gecheckt. Dabei ist eine URL rausgefallen, die auch schon in dem Beispiel ersichtlich ist.

Diese Seite läuft auf einem Zope-Server und ich bekomme hier einen Status 500 zurück:

[code=]URL: http://www.westpfalz-klinikum.de
500
urllib2.HTTPError
HTTP Error 500: Internal Server Error
Server: Zope/(Zope 2.7.6-final, python 2.3.4, linux2) ZServer/1.1
Date: Thu, 25 Jan 2007 09:31:24 GMT
Bobo-Exception-Line: 200
Content-Length: 824
Bobo-Exception-Value: See the server error log for details
Content-Type: text/html
Bobo-Exception-Type: IndexError
Connection: close
Bobo-Exception-File: BaseRequest.py
[/code]

Rufe ich die URL in einem Browser (Firefox 2) auf, sieht das Ergebnis ganz anders aus:

[code=]HTTP/1.x 302 Moved Temporarily
Server: Zope/(Zope 2.7.6-final, python 2.3.4, linux2) ZServer/1.1
Date: Thu, 25 Jan 2007 09:58:52 GMT
Content-Length: 0
Content-Type: text/x-unknown-content-type
Location: ../westpfalz-klinikum/content/e15882/index_ger.html[/code]

Der Browser folgt dann auch der neuen URL und erhält dort einen Status 200. Rufe ich hingegen diese Ziel-URL wiederum mit der urllib2 auf, klappt das auch, ich bekomme dann ebenfalls den Status 200.
Irgendwas läuft hier noch schief, dass mir Zope bei einer Umleitung (HTTP-Status 302) einen Internal Server Error entgegen wirft, wenn ich die urllib2 verwende.

Hat jemand eine Idee? Muss ich den Header noch erweitern? Ich bin mit meinem Latein am ende.

Danke,

Mat
Fabian Kochem
User
Beiträge: 36
Registriert: Mittwoch 5. April 2006, 14:11
Wohnort: Köln

Beitragvon Fabian Kochem » Donnerstag 29. März 2007, 20:03

Probiere mal das gzip rauszunehmen.
Könnte mir vorstellen, dass der Server damit Probleme hat.

Könntest du sonst vielleicht mal den Server und die URI, die du versuchst aufzurufen posten?

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder