import sys
import os
import logging
# need to add environment to apache's path for includes
sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), "../../")))
sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), "../")))
sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), ".")))
# likewise add cherrypy/other modules
sys.path.append(os.path.abspath("/Library/Python/2.7/site-packages/"))
import requests
response = requests.get('http://www.google.com').text
Использование Python 2.7.6, запросов 2.7.0 и Apache под MAMP 3.0, приведенный выше код сбой. Быстрый просмотр кода с помощью winpdb, по-видимому, предполагает, что на самом деле попытка открыть интернет-соединение - это то, что разрушает процесс Python. Журнал Apache не очень полезно, только говорязапрашивает segfaults при встраивании в wsgi, но не в автономном режиме
[notice] child pid 18879 exit signal Segmentation fault (11)
Хотя мой полный код использует CherryPy 3,8, чтобы обеспечить WSGI часть рамки, я чувствую, что это не имеет никакого отношения к проблеме.
Это известная проблема с запросами + apache, или это какая-то другая проблема? Сбой Python без каких-либо комментариев затрудняет мне даже думать о том, как начать решение этой проблемы.
EDIT: Используя pdb, я обнаружил, что программа segfaults в строке 1421 urllib.py в стандартной библиотеке python.
proxy_settings = _get_proxy_settings()
где _get_proxy_settings происходит от _scproxy.
Я до сих пор не знаю, как это исправить.