0

我已经使用 设置 Airbrake 在 Django 项目中工作pybrake,但 12 天前它停止工作,我正在尝试调试问题。

我用 aPipfile和 an创建了一个小“测试项目” airbrake_test.py(我在其中打乱了项目密钥和 ID):

(pybrake_test2-cU2-tsuL) bash-3.2$ ls
Pipfile         Pipfile.lock        airbrake_test.py

这是airbrake_test.py

import os
import logging
import pybrake

os.environ['AIRBRAKE_PROJECT_ID'] = '112113'
os.environ['AIRBRAKE_PROJECT_KEY'] = '6e936fee123asdfasdf71445de0'


notifier = pybrake.Notifier(project_id=os.getenv('AIRBRAKE_PROJECT_ID'),
                            project_key=os.getenv('AIRBRAKE_PROJECT_KEY'),
                            environment='staging')


airbrake_handler = pybrake.LoggingHandler(notifier=notifier,
                                          level=logging.ERROR)

logger = logging.getLogger('test')
logger.addHandler(airbrake_handler)


def run():
    logger.error('something bad happened')


if __name__ == "__main__":
    run()

这是与Pipfile一起使用的pipenv

[[source]]
url = "https://pypi.org/simple"
verify_ssl = true
name = "pypi"

[packages]
pybrake = "==0.3.3"

[dev-packages]

[requires]
python_version = "3.7"

我已经测试过这行得通;如果我运行脚本,我会收到一个关于pybrake无法找到.git目录的错误,但除此之外,没有错误:

(pybrake_test2-cU2-tsuL) bash-3.2$ python airbrake_test.py
2018-08-09 12:42:56,850 - pybrake - ERROR - get_git_revision failed: [Errno 2] No such file or directory: '/Users/kurtpeek/Documents/Scratch/pybrake_test2/.git/HEAD'

我还看到错误出现在我的 Airbrake 控制台中:

在此处输入图像描述

我已将完全相同的脚本复制到我的“实际”项目目录中,在一个子目录中scripts(并命名它airbrake_test2.py):

(lucy-web-CVxkrCFK) bash-3.2$ find . -name 'airbrake_test2*'
./scripts/airbrake_test2.py

但是,如果我尝试运行它,我会收到“无法获取本地颁发者证书”错误:

(lucy-web-CVxkrCFK) bash-3.2$ python scripts/airbrake_test2.py
2018-08-09 12:47:08,087 - pybrake - ERROR - get_git_revision failed: [Errno 2] No such file or directory: '/Users/kurtpeek/Documents/Dev/lucy2/lucy-web/.git/HEAD'
2018-08-09 12:47:08,434 - pybrake - ERROR - <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1045)>

我对为什么它在“测试”项目中工作,而不是在“真实”项目中工作感到非常困惑。这是Pipfile“真正的”项目:

[[source]]
url = "https://pypi.org/simple"
verify_ssl = true
name = "pypi"

[packages]
# AWS SDK for Python
boto3 = "==1.7.61"
# Use DATABASE_URL env variable to configure Django application
dj-database-url = "==0.5.0"
# Web framework
django = "==2.0.7"
# Django email integration for transactional ESPs
"django-anymail[mailgun]" = "==3.0"
# Log of changes made to a model
django-auditlog = "==0.4.5"
# Compresses linked and inline JavaScript or CSS into a single cached file
django-compressor = "==2.2"
# Save and retrieve current request object anywhere in your code
django-crequest = "==2018.5.11"
# Blocks people from brute forcing login attempts
django-defender = "==0.5.5"
# Wrap standard Django fields with encryption
django-encrypted-model-fields = "==0.5.5"
# Custom extensions for the Django Framework
django-extensions = "==2.1.0"
# A set of high-level abstractions for Django forms
django-formtools = "==2.1"
# Import and export data in multiple formats (Excel, CSV, JSON, and so on)
django-import-export = "==1.0.1"
# Using more than one form in a single view
django-multi-form-view = "==2.0.0"
# OAuth2 for Django
django-oauth-toolkit = "==1.2.0"
# SASS integration
django-sass-processor = "==0.7"
# Collection of custom storage backends for Django
django-storages = "==1.6.6"
# Two-Factor Authentication for Django
django-two-factor-auth = "==1.7.0"
# Tweak the form field rendering in templates
django-widget-tweaks = "==1.4.2"
# Toolkit for building Web APIs
djangorestframework = "==3.8.2"
# Versioning of Django Rest Framwork API representations
djangorestframework-version-transforms = "==0.5.0"
# Fixtures replacement
factory-boy = "==2.11.1"
# Style Guide Enforcement
flake8 = "==3.5.0"
# Allows tests to travel through time by mocking the datetime module
freezegun = "==0.3.10"
# Python WSGI HTTP Server
gunicorn = "==19.9.0"
# SASS support
libsass = "==0.14.5"
# Newrelic adapter
newrelic = "==3.4.0.95"
# Parsing, formatting, and validating international phone numbers
phonenumbers = "==8.9.10"
# Imaging processing library
pillow = "==5.2.0"
# PostgreSQL adapter
psycopg2 = "==2.7.3"
# Python exception notifier for Airbrake
pybrake = "==0.3.3"
# ISO databases for languages, countries and subdivisions
pycountry = "==18.5.26"
# Extensions to the standard datetime module
python-dateutil = "==2.6.0"
# Loads environment variables from .env file
python-dotenv = "==0.8.2"
# Python wrapper for the Intercom API
python-intercom = "==3.1.0"
# HTTP library
requests = "==2.19.1"
# Python library to capitalize strings
titlecase = "==0.12.0"
# Communication with the Twilio API
twilio = "==6.15.1"
# Static file serving
whitenoise = "==3.3.1"

[dev-packages]
# Tab completion, syntax highlighting, better tracebacks for ipython
ipdb = "==0.11"
# Interactive Python shell
ipython = "==6.4.0"

[requires]
python_version = "3.7.0"

如您所见, 的版本pybrake与“测试”项目(版本 0.3.3)中的完全相同;我能想到的唯一区别python_version3.7在“测试”项目和3.7.0“真实”项目中。

知道为什么我会收到此错误吗?

4

1 回答 1

3

在 Airbrake 的支持下,我设法通过运行(在我的 Mac 上)解决了这个Install Certificates.command问题/Applications/Python 3.7

Kurts-MacBook-Pro-2:Python 3.7 kurtpeek$ pwd
/Applications/Python 3.7
Kurts-MacBook-Pro-2:Python 3.7 kurtpeek$ sudo ./"Install Certificates.command"
 -- pip install --upgrade certifi
The directory '/Users/kurtpeek/Library/Caches/pip/http' or its parent directory is not owned by the current user and the cache has been disabled. Please check the permissions and owner of that directory. If executing pip with sudo, you may want sudo's -H flag.
The directory '/Users/kurtpeek/Library/Caches/pip' or its parent directory is not owned by the current user and caching wheels has been disabled. check the permissions and owner of that directory. If executing pip with sudo, you may want sudo's -H flag.
Requirement already up-to-date: certifi in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (2018.4.16)
 -- removing any existing file or link
 -- creating symlink to certifi certificate bundle
 -- setting permissions
 -- update complete

现在提出的错误urlopen()已经消失了:

(lucy-web-CVxkrCFK) bash-3.2$ python scripts/airbrake_test2.py
2018-08-09 13:01:09,867 - pybrake - ERROR - get_git_revision failed: [Errno 2] No such file or directory: '/Users/kurtpeek/Documents/Dev/lucy2/lucy-web/.git/HEAD'

我再次在我们的 Airbrake 控制台中看到错误。

于 2018-08-09T20:05:15.447 回答