DelboyJay001 Ответов: 1

python" запрашивает " пакет очень медленного извлечения html-страниц


Я надеюсь, что кто-то еще видел эту проблему и знает, в чем может быть проблема. Я написал немного кода python 3.4, чтобы прочитать config.xml файл задания in from Jenkins с использованием пакета requests 2.7.0 и формата URL:
http://jenkins/job/<job name>/config.xml

Все это хорошо, но для извлечения страницы требуется добрых 9-12 секунд. Если я помещу этот URL-адрес в браузер, результат будет мгновенным, поэтому я не думаю, что проблема здесь заключается в сервере или сети. Я также пытался использовать пакет pyJenkins, но опять же любой запрос занимает столько же времени.

Я, очевидно, сделал поиск в Google по этому вопросу, но ничего не кажется релевантным, что говорит о том, что я делаю что-то не так, а не ошибку в самом пакете.

Я использовал следующий код, чтобы получить страницу:
import requests

# Get a list of all the jobs on the system
a = requests.get('http://jenkins-server/api/json', params={'pretty':'true'},
                 auth=("username", "password"))

Я также пытался получить доступ к веб-страницам в сети, которые не требуют аутентификации, сайтам http и https и другим внутренним веб-серверам, которые у нас есть, но все они медленные.

У кого-нибудь есть идеи, почему это происходит, или предложения, как это исправить?

Xiao Ling

Вы пробовали urllib2?

DelboyJay001

Это может быть как-то связано с поиском DNS, который я нашел раньше. Вы используете код python в Windows или Linux? Можете ли вы попробовать использовать IP-адрес и посмотреть, ускорит ли это процесс?

1 Ответов

Рейтинг:
1

DelboyJay001

Попробуйте это и посмотрите, работает ли это. У вас может возникнуть проблема с DNS, поэтому попробуйте использовать IP-адрес вместо DNS-имени и проверьте, работает ли он быстрее. В противном случае существует известная проблема с обнаружением прокси-сервера в библиотеке запросов, даже если у вас есть настройка системы для обхода, которую, как я полагаю, вы имеете в данном случае.

import requests

session = requests.Session()
session.trust_env = False

response = session.get('http://jenkins-server/api/json', params={'pretty':'true'},
                 auth=("username", "password")))


Этот фрагмент кода взят отсюда и говорит о той же проблеме:

python-requests: как отключить / обойти прокси-переполнение стека[^]


Richard Deeming

Разговор с самим собой-первый признак безумия!