【问题标题】:Django-Sentry giving Error 405 when trying to send error to localhost:9000/storeDjango-Sentry 在尝试向 localhost:9000/store 发送错误时给出错误 405
【发布时间】:2012-01-26 08:56:26
【问题描述】:

Django-sentry 不爱我。我正在尝试将错误发送到 localhost:9000/store。这是错误:

jamis$ python manage.py runserver
Validating models...

0 errors found
Django version 1.3.1, using settings 'hv.settings'
Development server is running at http://127.0.0.1:8000/
Quit the server with CONTROL-C.

// useless info left out

Thu, 22 Dec 2011 18:45:13 +0000 [ERROR] M:sentry.errors.client, P:9067, F:base.py:226, MSG:Unable to reach Sentry log server: HTTP Error 405: METHOD NOT ALLOWED (url: http://0.0.0.0:9000/store, body: )
Traceback (most recent call last):
  File "/Library/Python/2.7/site-packages/raven/base.py", line 222, in send
    return self.send_remote(url=url, data=message, headers=headers)
  File "/Library/Python/2.7/site-packages/raven/base.py", line 201, in send_remote
    response = urllib2.urlopen(req, data).read()
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 126, in urlopen
    return _opener.open(url, data, timeout)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 400, in open
    response = meth(req, response)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 513, in http_response
    'http', request, response, code, msg, hdrs)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 432, in error
    result = self._call_chain(*args)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 372, in _call_chain
    result = func(*args)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 619, in http_error_302
    return self.parent.open(new, timeout=req.timeout)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 400, in open
    response = meth(req, response)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 513, in http_response
    'http', request, response, code, msg, hdrs)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 438, in error
    return self._call_chain(*args)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 372, in _call_chain
    result = func(*args)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 521, in http_error_default
    raise HTTPError(req.get_full_url(), code, msg, hdrs, fp)
HTTPError: HTTP Error 405: METHOD NOT ALLOWED
Thu, 22 Dec 2011 18:45:13 +0000 [WARNING] M:sentry.errors.client, P:9067, F:base.py:227, MSG:Not Found: /favicon.ico
Thu, 22 Dec 2011 18:45:13 +0000 [WARNING] M:django.request, P:9067, F:base.py:142, MSG:Not Found: /favicon.ico
[22/Dec/2011 18:45:14] "POST /accounts/login/ HTTP/1.1" 302 0
Thu, 22 Dec 2011 18:45:15 +0000 [ERROR] M:sentry.errors.client, P:9067, F:base.py:226, MSG:Unable to reach Sentry log server: HTTP Error 405: METHOD NOT ALLOWED (url: http://0.0.0.0:9000/store, body: )
Traceback (most recent call last):
  File "/Library/Python/2.7/site-packages/raven/base.py", line 222, in send
    return self.send_remote(url=url, data=message, headers=headers)
  File "/Library/Python/2.7/site-packages/raven/base.py", line 201, in send_remote
    response = urllib2.urlopen(req, data).read()
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 126, in urlopen
    return _opener.open(url, data, timeout)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 400, in open
    response = meth(req, response)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 513, in http_response
    'http', request, response, code, msg, hdrs)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 432, in error
    result = self._call_chain(*args)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 372, in _call_chain
    result = func(*args)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 619, in http_error_302
    return self.parent.open(new, timeout=req.timeout)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 400, in open
    response = meth(req, response)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 513, in http_response
    'http', request, response, code, msg, hdrs)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 438, in error
    return self._call_chain(*args)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 372, in _call_chain
    result = func(*args)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 521, in http_error_default
    raise HTTPError(req.get_full_url(), code, msg, hdrs, fp)
HTTPError: HTTP Error 405: METHOD NOT ALLOWED
Thu, 22 Dec 2011 18:45:15 +0000 [CRITICAL] M:sentry.errors.client, P:9067, F:base.py:227, MSG:
Thu, 22 Dec 2011 18:45:15 +0000 [CRITICAL] M:root, P:9067, F:home.py:17, MSG:
[22/Dec/2011 18:45:15] "GET / HTTP/1.1" 200 8903
[22/Dec/2011 18:45:15] "GET /static/css/build/bootstrap/bootstrap.css HTTP/1.1" 304 0
[22/Dec/2011 18:45:15] "GET /static/css/build/hv-pages.css HTTP/1.1" 200 2019
[22/Dec/2011 18:45:15] "GET /static/css/build/pages/hv-notifications-dialogs.css HTTP/1.1" 200 373
Thu, 22 Dec 2011 18:45:15 +0000 [ERROR] M:sentry.errors.client, P:9067, F:base.py:226, MSG:Unable to reach Sentry log server: HTTP Error 405: METHOD NOT ALLOWED (url: http://0.0.0.0:9000/store, body: )
Traceback (most recent call last):
  File "/Library/Python/2.7/site-packages/raven/base.py", line 222, in send
    return self.send_remote(url=url, data=message, headers=headers)
  File "/Library/Python/2.7/site-packages/raven/base.py", line 201, in send_remote
    response = urllib2.urlopen(req, data).read()
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 126, in urlopen
    return _opener.open(url, data, timeout)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 400, in open
    response = meth(req, response)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 513, in http_response
    'http', request, response, code, msg, hdrs)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 432, in error
    result = self._call_chain(*args)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 372, in _call_chain
    result = func(*args)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 619, in http_error_302
    return self.parent.open(new, timeout=req.timeout)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 400, in open
    response = meth(req, response)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 513, in http_response
    'http', request, response, code, msg, hdrs)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 438, in error
    return self._call_chain(*args)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 372, in _call_chain
    result = func(*args)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 521, in http_error_default
    raise HTTPError(req.get_full_url(), code, msg, hdrs, fp)
HTTPError: HTTP Error 405: METHOD NOT ALLOWED
Thu, 22 Dec 2011 18:45:15 +0000 [WARNING] M:sentry.errors.client, P:9067, F:base.py:227, MSG:Not Found: /favicon.ico
Thu, 22 Dec 2011 18:45:15 +0000 [WARNING] M:django.request, P:9067, F:base.py:142, MSG:Not Found: /favicon.ico

我在 settings.py 中设置了一些 Sentry 设置如下:

SENTRY_SERVERS = ['http://0.0.0.0:9000/store']
SENTRY_KEY = "666"

TEMPLATE_DEBUG = True
SENTRY_TESTING = True

LOGGING = {
    'version': 1,
    'disable_existing_loggers': True,
    'formatters': {
        'default': {
            'format': '%(asctime)s [%(levelname)s] M:%(name)s, P:%(process)d, F:%(filename)s:%(lineno)d, MSG:%(message)s',
            'datefmt': '%a, %d %b %Y %H:%M:%S %z',
        },
    },
    'root': {
            'level':'DEBUG',            # CHANGE TO DEFAULT_LEVEL
            'handlers':['sentry', 'console'],
    },
    'handlers': {
        'sentry': {
            'level':'INFO',
            'class': 'raven.contrib.django.handlers.SentryHandler',
            'formatter':'default'
        },
        'console':{
            'level':'INFO',
            'class':'logging.StreamHandler',
            'formatter': 'default'
        },
    },
    'loggers': {
        'sentry.errors': {
          'level': 'DEBUG',
          'handlers': ['console'],
          'propagate': False,
        },
    }
}

在另一段代码中,我抛出如下手动错误:

logger = logging.getLogger()
logger.critical()

另外,我在我的 INSTALLED_APPS 中添加了 sentry 和 raven.contrib.django


这是 Sentry 的默认配置文件(位于 ~/.sentry/sentry.conf.py):

import os.path

from sentry.conf.server import *

ROOT = os.path.dirname(__file__)

DATABASES = {
    'default': {
        # You can swap out the engine for MySQL easily by changing this value
        # to ``django.db.backends.mysql`` or to PostgreSQL with
        # ``django.db.backends.postgresql_psycopg2``
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(ROOT, 'sentry.db'),
        'USER': 'postgres',
        'PASSWORD': '',
        'HOST': '',
        'PORT': '',
    }
}

SENTRY_KEY = "666"

# Set this to false to require authentication
SENTRY_PUBLIC = True

SENTRY_WEB_HOST = '0.0.0.0'
SENTRY_WEB_PORT = 9000

SENTRY_WEB_LOG_FILE = os.path.join(ROOT, 'sentry.log')
SENTRY_WEB_PID_FILE = os.path.join(ROOT, 'sentry.pid')

我确定我只是错误地访问了 Sentry 服务器,但我不知道为什么。 raven 和 django-sentry 的文档非常简洁!任何帮助将不胜感激。

【问题讨论】:

    标签: python django logging sentry


    【解决方案1】:

    我花了好几个小时才弄明白!如果您遇到此问题,这可能是解决方案:

    SENTRY_SERVERS = ['http://0.0.0.0:9000/store']
    

    需要有一个斜杠!

    SENTRY_SERVERS = ['http://0.0.0.0:9000/store/']
    

    天啊。

    【讨论】:

    • 您可能希望将此作为错误提交给 django-sentry
    • 这会去哪里?用于客户端连接的 JS 文件,还是某个地方的 Python 配置文件?
    【解决方案2】:

    遇到了一个具有相同原因的稍微类似的问题。也在这里发布。

    这是生成的哨兵配置文件的样子。

    # You should configure the absolute URI to Sentry. It will attempt to guess it if 
    # you don't but proxies may interfere with this.
    SENTRY_URL_PREFIX = 'http://localhost:9001'  # No trailing slash!
    SENTRY_WEB_HOST = '0.0.0.0'
    SENTRY_WEB_PORT = 9001`
    

    当我用sentry test 测试它时它工作了 但是,在插入日志时,我遇到了一些错误

    ERROR Unable to reach Sentry log server: <urlopen error timed out> 
    (url:http://localhost:9001/api/store/) 
    ..........
    ..........
    File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", 
    line 1174, in do_open raise URLError(err).....
    URLError: <urlopen error timed out>
    

    当我不顾说明添加尾随斜杠时,这些错误消失了。也许这与我的本地设置有关。

    【讨论】:

      猜你喜欢
      • 2011-08-09
      • 2021-10-11
      • 2014-03-22
      • 2020-11-20
      • 2015-11-14
      • 1970-01-01
      • 2020-10-28
      • 1970-01-01
      • 2020-10-29
      相关资源
      最近更新 更多