mod_python パブリッシャーを使用して単純な python ページを提供するセットアップがあります。いくつかの時点で、Python 関数で標準の apache エラーを発生させたいと考えています。たとえば、必要なファイルが見つからない場合は 500 エラーをスローします。mod_python スクリプト内から apache エラーをスローするにはどうすればよいですか?
1205 次
2 に答える
2
私はPythonの専門家ではありませんが、このドキュメントから、次のことができるように見えます。
raise apache.SERVER_RETURN, apache.HTTP_INTERNAL_SERVER_ERROR
リンク切れの場合のドキュメントの引用は次のとおりです。
ハンドラー関数には、常にリクエストオブジェクトへの参照が渡されます。(このマニュアル全体を通して、要求オブジェクトはreq変数によって参照されることがよくあります。)
すべてのハンドラーは以下を返すことができます:
apache.OKは、リクエストのこのフェーズがこのハンドラーによって処理され、エラーが発生しなかったことを意味します。
apache.DECLINEDは、このハンドラーが要求のこのフェーズを完了まで処理しておらず、Apacheが後続のモジュールで別のハンドラーを探す必要があることを意味します。
apache.HTTP_ERRORは、HTTPエラーが発生したことを意味します。HTTP_ERRORは、次のいずれかになります。
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
HTTPエラーコードを返す代わりに、ハンドラーはapache.SERVER_RETURN例外を発生させ、例外値としてHTTPエラーコードを提供することでエラーを通知できます。例:
raise apache.SERVER_RETURN, apache.HTTP_FORBIDDEN
于 2010-04-20T15:19:46.453 に答える
1
私はそれだと信じています:
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
apache.DONE を上げると、Apache は独自のエラー ページを書き出さないように指示されます。
于 2010-04-20T15:39:50.200 に答える