Wie Sie einen HTTP-Fehler mit mod_python werfen
-
22-09-2019 - |
Frage
Ich habe ein Setup, wo ich mit einfacher Python Seiten mit dem Mod_python Verlag. An einigen Stellen würde Ich mag die Python-Funktion raise ein Standard-Apache-Fehler haben - zum Beispiel wirft einen 500-Fehler, wenn eine erforderliche Datei fehlt. Wie kann ich einen Apache Fehler innerhalb eines Mod_python Skript werfen?
Lösung
Ich bin kein Experte, aber Python von dieser Dokumentation , so scheint es, dass Sie tun können:
raise apache.SERVER_RETURN, apache.HTTP_INTERNAL_SERVER_ERROR
Hier ist ein Zitat von der Dokumentation bei Toter Link:
Eine Handler-Funktion wird immer einen Verweis auf eine Anforderung übergeben werden Objekt. (In diesem Handbuch wird das Request-Objekt oft bezeichnet In dem durch die erf Variable.)
Jeder Handler kann zurück:
apache.OK, was bedeutet, diese Phase des Antrags wurde durch diese behandelt Handler und keine Fehler aufgetreten sind.
apache.DECLINED, diese Prozedur Bedeutung hat diese Phase behandelt der Antrag auf Abschluss und Apache Bedarf für einen anderen Handler suchen in den folgenden Modulen.
apache.HTTP_ERROR trat einen HTTP-Fehler bedeutet. HTTP_ERROR kann sein eine der folgenden Bedingungen:
HTTP_CONTINUE = 100 HTTP_SWITCHING_PROTOCOLS = 101 HTTP_PROCESSING = 102 HTTP_OK = 200 HTTP_CREATED = 201 HTTP_ACCEPTED = 202 HTTP_NON_AUTHORITATIVE = 203 HTTP_NO_CONTENT = 204 HTTP_RESET_CONTENT = 205 HTTP_PARTIAL_CONTENT = 206 HTTP_MULTI_STATUS = 207 HTTP_MULTIPLE_CHOICES = 300 HTTP_MOVED_PERMANENTLY = 301 HTTP_MOVED_TEMPORARILY = 302 HTTP_SEE_OTHER = 303 HTTP_NOT_MODIFIED = 304 HTTP_USE_PROXY = 305 HTTP_TEMPORARY_REDIRECT = 307 HTTP_BAD_REQUEST = 400 HTTP_UNAUTHORIZED = 401 HTTP_PAYMENT_REQUIRED = 402 HTTP_FORBIDDEN = 403 HTTP_NOT_FOUND = 404 HTTP_METHOD_NOT_ALLOWED = 405 HTTP_NOT_ACCEPTABLE = 406 HTTP_PROXY_AUTHENTICATION_REQUIRED= 407 HTTP_REQUEST_TIME_OUT = 408 HTTP_CONFLICT = 409 HTTP_GONE = 410 HTTP_LENGTH_REQUIRED = 411 HTTP_PRECONDITION_FAILED = 412 HTTP_REQUEST_ENTITY_TOO_LARGE = 413 HTTP_REQUEST_URI_TOO_LARGE = 414 HTTP_UNSUPPORTED_MEDIA_TYPE = 415 HTTP_RANGE_NOT_SATISFIABLE = 416 HTTP_EXPECTATION_FAILED = 417 HTTP_UNPROCESSABLE_ENTITY = 422 HTTP_LOCKED = 423 HTTP_FAILED_DEPENDENCY = 424 HTTP_INTERNAL_SERVER_ERROR = 500 HTTP_NOT_IMPLEMENTED = 501 HTTP_BAD_GATEWAY = 502 HTTP_SERVICE_UNAVAILABLE = 503 HTTP_GATEWAY_TIME_OUT = 504 HTTP_VERSION_NOT_SUPPORTED = 505 HTTP_VARIANT_ALSO_VARIES = 506 HTTP_INSUFFICIENT_STORAGE = 507 HTTP_NOT_EXTENDED = 510
Als Alternative zu einem HTTP-Fehlercode auf der Rückkehr kann Handler Signal ein Fehler durch die apache.SERVER_RETURN Ausnahme Anheben und Bereitstellen ein HTTP-Fehlercode als Ausnahmewert, z.
raise apache.SERVER_RETURN, apache.HTTP_FORBIDDEN
Andere Tipps
Ich glaube, es ist:
def my_action(req):
# all the status code constants are defined in the apache module
req.status = apache.HTTP_INTERNAL_SERVER_ERROR
req.content_type = some_mime_type
req.write(content)
raise apache.HTTP_SERVER_RETURN, apache.DONE
Erhöhung apache.DONE sagt Apache nicht seine eigene Fehlerseite zu schreiben.