【问题标题】:Airbrake error: urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificateAirbrake 错误:urlopen 错误 [SSL: CERTIFICATE_VERIFY_FAILED] 证书验证失败:无法获取本地颁发者证书
【发布时间】:2019-01-17 09:05:24
【问题描述】:

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

我创建了一个带有 Pipfileairbrake_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()

这是与pipenv 一起使用的Pipfile

[[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_version 在“测试”项目中是3.7,而在“真实”项目中是3.7.0

知道为什么会出现此错误吗?

【问题讨论】:

    标签: python ssl airbrake


    【解决方案1】:

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

    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 控制台中看到错误。

    【讨论】:

    • 我在我的应用程序中看不到 Python 目录。我正在使用 Anaconda 并为 python 3.6 创建了一个新环境。这与“纯”安装不同(它不应该,但..)。在我的 mac 上找不到 Certificates.command
    猜你喜欢
    • 2020-04-06
    • 2020-03-04
    • 2021-09-17
    • 1970-01-01
    • 2022-11-28
    • 1970-01-01
    • 2021-07-20
    • 2021-11-25
    • 2020-12-13
    相关资源
    最近更新 更多