简体   繁体   中英

python-raven on app engine times out on errors

I am using python-raven as my sentry client. Unfortunately, when I got an error 500 on my server (caught by raven) my request times out:

E 17:05:57.743 2015-05-13  500       0 B  59.99s /mobile_backend/device/2EBE5887-03EA-458A-B4C4-E57253966231/
  137.194.58.229 - - [13/May/2015:08:05:57 -0700] "GET /mobile_backend/device/2EBE5887-03EA-458A-B4C4-E57253966231/ HTTP/1.1" 500 0 - "Apache-HttpClient/4.2.6 (java 1.5)" "v1.blueberry.xxx-staging.appspot.com" ms=59989 cpu_ms=0 cpm_usd=0.000281 exit_code=119 instance=00c61b117cce7ef8bc8fb86f8aa5315fc96a4d app_engine_release=1.9.20
    E 17:05:57.741 Thread running after request. Creation traceback:
        File "/base/data/home/runtimes/python27/python27_lib/versions/1/google/appengine/runtime/runtime.py", line 152, in HandleRequest
          error)
        File "/base/data/home/runtimes/python27/python27_lib/versions/1/google/appengine/runtime/wsgi.py", line 329, in HandleRequest
          return WsgiRequest(environ, handler_name, url, post_data, error).Handle()
        File "/base/data/home/runtimes/python27/python27_lib/versions/1/google/appengine/runtime/wsgi.py", line 267, in Handle
          result = handler(dict(self._environ), self._StartResponse)
        File "/base/data/home/apps/s~xxx-staging/blueberry:v1.384273266847676695/lib/django/core/handlers/wsgi.py", line 187, in __call__
          response = self.get_response(request)
        File "/base/data/home/apps/s~xxx-staging/blueberry:v1.384273266847676695/lib/django/core/handlers/base.py", line 198, in get_response
          signals.got_request_exception.send(sender=self.__class__, request=request)
        File "/base/data/home/apps/s~xxx-staging/blueberry:v1.384273266847676695/lib/django/dispatch/dispatcher.py", line 198, in send
          response = receiver(signal=self, sender=sender, **named)
        File "/base/data/home/apps/s~xxx-staging/blueberry:v1.384273266847676695/lib/raven/contrib/django/models.py", line 177, in sentry_exception_handler
          client.captureException(exc_info=sys.exc_info(), request=request)
        File "/base/data/home/apps/s~xxx-staging/blueberry:v1.384273266847676695/lib/raven/base.py", line 679, in captureException
          'raven.events.Exception', exc_info=exc_info, **kwargs)
        File "/base/data/home/apps/s~xxx-staging/blueberry:v1.384273266847676695/lib/raven/contrib/django/client.py", line 157, in capture
          result = super(DjangoClient, self).capture(event_type, **kwargs)
        File "/base/data/home/apps/s~xxx-staging/blueberry:v1.384273266847676695/lib/raven/base.py", line 526, in capture
          self.send(**data)
        File "/base/data/home/apps/s~xxx-staging/blueberry:v1.384273266847676695/lib/raven/base.py", line 613, in send
          return self.send_encoded(message, auth_header=auth_header)
        File "/base/data/home/apps/s~xxx-staging/blueberry:v1.384273266847676695/lib/raven/base.py", line 640, in send_encoded
          self.send_remote(url=url, data=message, headers=headers)
        File "/base/data/home/apps/s~xxx-staging/blueberry:v1.384273266847676695/lib/raven/base.py", line 598, in send_remote
          failed_send)
        File "/base/data/home/apps/s~xxx-staging/blueberry:v1.384273266847676695/lib/raven/transport/threaded.py", line 169, in async_send
          self.get_worker().queue(
        File "/base/data/home/apps/s~xxx-staging/blueberry:v1.384273266847676695/lib/raven/transport/threaded.py", line 157, in get_worker
          self._worker = AsyncWorker()
        File "/base/data/home/apps/s~xxx-staging/blueberry:v1.384273266847676695/lib/raven/transport/threaded.py", line 36, in __init__
          self.start()
        File "/base/data/home/apps/s~xxx-staging/blueberry:v1.384273266847676695/lib/raven/transport/threaded.py", line 113, in start
          self._thread.start()
        File "/base/data/home/runtimes/python27/python27_dist/lib/python2.7/threading.py", line 505, in start
          _start_new_thread(self.__bootstrap, ())
        File "/base/data/home/runtimes/python27/python27_lib/versions/1/google/appengine/runtime/runtime.py", line 82, in StartNewThread
          return base_start_new_thread(Run, ())
    W 17:05:57.743 Threads started by this request continued executing past the hard deadline.

The 500 error is correctly reported on Sentry. How can I configure raven to not make timeout my request?

Switching from:

SENTRY_DSN = 'http://public:secret@example.com/1'  

to:

SENTRY_DSN = 'sync+http://public:secret@example.com/1'  

did the trick !

This worked for me as well:

from raven import Client
from raven.transport.threaded import HTTPTransport

client = Client(
    'https://public_key:secret_key@sentry.io/project_id',
    transport=HTTPTransport
)

try:
    1 / 0
except ZeroDivisionError:
    client.captureException()

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM