Есть ли способ проверки подлинности удаленного сеанса для очистки данных и проверки подлинности вместо проверки подлинности в каждом запросе? - PullRequest
0 голосов
/ 07 февраля 2019

У меня есть скрипт на python для очистки данных из API jenkins.Проблема в том, что скрипт аутентифицируется при каждом запросе, а это не является производительным.Я хотел бы пройти аутентификацию один раз и иметь возможность запрашивать данные столько, сколько мне нравится.

Возможно ли это?

import requests
from basicauth import encode
from pprint import pprint
import json


class JenkinsInfo(object):

    defaultHeader = {
    'Accept': 'application/json, */*',
    'content-type': 'application/json',
    'Authorization': ''
    }

    def __init__(self, url, user, password):
        self.jenkins_url = url.rstrip("/")
        self.jenkins_user = user
        self.jenkins_password = password
        self.s = requests.Session()
        self.ssl_verify = ssl_verify
        self.defaultHeader['Authorization'] = encode(user, password)

#### the script below is the one that call previous class ###  

from prometheus_client import start_http_server,Counter
from conf_example import JENKINS_URL, JENKINS_USER, 
JENKINS_PASSWORD
from jenkins_metrics import JenkinsInfo
import time
from sys import exit


def main():
    print("Starting Jenkins Metrics")
    jenkins = JenkinsInfo(JENKINS_URL, JENKINS_USER, JENKINS_PASSWORD)

1 Ответ

0 голосов
/ 07 февраля 2019

Да, вам нужно получить печенье.Убедитесь, что вы используете один и тот же объект сеанса во время выполнения, и просто сделайте свой первый запрос на вход в систему.Не уверен, что именно Дженкинс требует для входа в систему, но вы, вероятно, могли бы получить некоторые хорошие идеи от проекта jenkinsapi или другого программного обеспечения, делающего то же самое.Код, скопированный с них:

login_url = 'j_acegi_security_check'
jenkins_url = '{0}/{1}'.format(self.baseurl, login_url)
data = urlencode({'j_username': self.username,
                  'j_password': self.password}).encode("utf-8")

Обратите внимание, что они делают некоторые вещи, которые могут не быть строго необходимыми в вашем случае использования.Также рассмотрите возможность использования этой библиотеки или аналогичной вместо написания собственного кода с нуля.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...