Как программно изменить аргумент при ошибке подключения? - PullRequest
0 голосов
/ 17 февраля 2019

Я звоню через API.При выполнении запросов я нажимаю на максимальное количество попыток и получаю ошибку соединения.Я хотел бы редактировать URL программно, увеличивая число в URL.Я знаю, как программно изменить аргументы, но не уверен, как изменить / увеличить аргумент, когда я сталкиваюсь с ошибкой соединения.

Мой язык использования - Python, и я использую библиотеку запросов.

Фрагмент кода Libraries importing from requests.auth import HTTPBasicAuth import requests from requests.exceptions import ConnectionError

```def make_request(data , id=None):
     url = "http://server001.net:8080/?id="
     result = {}
     if id:
       response = requests.get(url +id , auth=HTTPBasicAuth('uname', 'pass'))
       return response
     else :
       for line in data:
         try:
           response = requests.get(url +line , auth=HTTPBasicAuth('uname', 'pass'))
            result = html_parser2(response)
            if result:
                write_csv(result)
            else:
                pass
         except ConnectionError as e:
           print (e)```

Ожидаемый результат url = "http://server001.net:8080/?id=" url_edited = "http://server002.net:8080/?id=" Только если я достиг максимумаколичество попыток, т.е. я получаю исключение или продолжаю запрашивать тот же URL.

1 Ответ

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

Один из вариантов - заключить блок try..except в петлю while.Кроме того, может быть, вам стоит поставить свой первый requests.get в блок try..except.Также старайтесь избегать нескольких несвязанных операций в одном try..except блоке, т.е. выполнять write_csv только после успешного соединения.

def make_request(data , id=None):
    url = 'http://server001.net:8080/?id={}'
    connection_failed = False
    response = None
    if id:
        try:
            response = requests.get(url.format(id) , auth=HTTPBasicAuth('uname', 'pass'))
        except ConnectionError as e:
            print('id = {}, e: {}'.format(id, e))
    else:
        for line in data:
            while not connection_failed:
                try:
                    response = requests.get(url.format(line) , auth=HTTPBasicAuth('uname', 'pass'))
                except ConnectionError as e:
                    connection_failed = True
                    print('line = {}, e: {}'.format(id, e))
                else:
                    result = html_parser2(response)
                    if result:
                        write_csv(result)
    return response
def make_request(data , id=None):
    url = 'http://server001.net:8080/?id={}'
    response = None
    if id:
        try:
            response = requests.get(url.format(id) , auth=HTTPBasicAuth('uname', 'pass'))
        except ConnectionError as e:
            print('id = {}, e: {}'.format(id, e))
    else:
        for line in data:
            try:
                response = requests.get(url.format(line) , auth=HTTPBasicAuth('uname', 'pass'))
            except ConnectionError as e:
                print('line = {}, e: {}'.format(id, e))
            else:
                result = html_parser2(response)
                if result:
                    write_csv(result)
                break
    return response
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...