2

gunicorn + plone をセットアップしようとしています。これまでのところ問題なく動作しますが、エラー (404、500 など) の処理に失敗し、plone のエラー ページを返すはずなのに「Internal Server Error」がスローされます。

存在しないページをリクエストする例を以下に貼り付けます。問題は、他の要求と同様に、エラーが zope/plone によって処理されるように、gunicorn をどのようにセットアップする必要があるかということです。

乾杯とよろしく

==> var/log/gunicorn-stdout---supervisor-JhaTfg.log <==
2012-05-24 01:41:16 [15137] [ERROR] Error handling request
Traceback (most recent call last):
  File "/home/user/testing/eggs/gunicorn-0.14.3-py2.6.egg/gunicorn/workers/sync.py", line 100, in handle_request
    respiter = self.wsgi(environ, resp.start_response)
  File "/home/user/testing/eggs/repoze.retry-1.0-py2.6.egg/repoze/retry/__init__.py", line 90, in __call__
    app_iter = self.application(environ, replace_start_response)
  File "/home/user/testing/eggs/repoze.tm2-1.0b2-py2.6.egg/repoze/tm/__init__.py", line 24, in __call__
    result = self.application(environ, save_status_and_headers)
  File "/home/user/testing/eggs/repoze.vhm-0.14-py2.6.egg/repoze/vhm/middleware.py", line 106, in __call__
    return self.application(environ, start_response)
  File "/home/user/testing/eggs/Zope2-2.13.13-py2.6.egg/ZPublisher/WSGIPublisher.py", line 255, in publish_module
    response = _publish(request, 'Zope2')
  File "/home/user/testing/eggs/Zope2-2.13.13-py2.6.egg/ZPublisher/WSGIPublisher.py", line 185, in publish
    object = request.traverse(path, validated_hook=validated_hook)
  File "/home/user/testing/eggs/Zope2-2.13.13-py2.6.egg/ZPublisher/BaseRequest.py", line 518, in traverse
    return response.notFoundError(URL)
  File "/home/user/testing/eggs/Zope2-2.13.13-py2.6.egg/ZPublisher/HTTPResponse.py", line 718, in notFoundError
    "<p><b>Resource:</b> %s</p>" % escape(entry))
NotFound:   <h2>Site Error</h2>
  <p>An error was encountered while publishing this resource.
  </p>
4

1 に答える 1

0

私の質問では、WSGI Zope と gunicorn を使用していることを忘れていました。

このシナリオでは、ZPublisher/WSGIPublisher.py にパッチを適用して、500 内部サーバー エラーをスローする代わりに、NotFound 例外 (404) を適切に処理しました。

Zope + Wsgi がまだそれほど成熟していないことが判明しました (少なくともエラー処理に関して)。

于 2012-05-31T19:40:06.730 に答える