Уведомления

Группа в Telegram: @pythonsu

#1 Март 7, 2019 02:40:42

ZiG
Зарегистрирован: 2018-12-16
Сообщения: 47
Репутация: +  0  -
Профиль   Отправить e-mail  

Обработка ошибки при подключении к сайту

Так как я новичок, опыт и знания по теме обработка ошибок нулевая.
Есть код с использованием библиотек requests и time

 import time
import requests
while True:
    Тут код с подключением к API сайта с помощью модуля requests и вытягиванием от туда инфы
    Тут код обработки этой инфы
нужно сделать так:
 import time
import requests
while True:
    while True:
        код с подключением
        Если инфа получена то break
        Иначе (т. е. ошибка с подключением) ждать минуту и опять повторить
    код обработки этой инфы
Сильно не ругайтесь. Буду благодарен за помощь

Отредактировано ZiG (Март 7, 2019 02:41:25)

Офлайн

#2 Март 7, 2019 04:46:24

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Обработка ошибки при подключении к сайту

ZiG
нужно сделать так:
И нафига это вам нужно?
Я - новичок, ничего не знаю и не понимаю, но мне нужно вот так! Ну, если вам нужно, вы делайте, какие проблемы. А если вам нужно узнать, как правильно решаются те или иные вопросы, то вам следовало бы сначала по человечески описать саму задачу, не то как вы делаете, а то что вы делаете. У вас же есть изначальная постановка задачи, без ваших потуг в коде, вот эту постановку тезисно и предъявите.



Офлайн

#3 Март 7, 2019 05:03:22

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  253  -
Профиль   Отправить e-mail  

Обработка ошибки при подключении к сайту

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

Но непонятно в чем у вас затык. Кончились знания синтаксиса?
Ну тогда смотрите документацию
Конструкция Если … то - if … else
Подождать - time.sleep



Отредактировано doza_and (Март 7, 2019 05:05:13)

Офлайн

#4 Март 7, 2019 10:33:14

ZiG
Зарегистрирован: 2018-12-16
Сообщения: 47
Репутация: +  0  -
Профиль   Отправить e-mail  

Обработка ошибки при подключении к сайту

 import requests
import time
sred = 0
mas = []
while True:
    url = f'https://api.exmo.com/v1/order_book/?pair=USD_RUB&limit=1'
    response = requests.get(url).json()['USD_RUB']
    response['ask'], response['bid']
    usd_rub_ask = float(response['ask'][0][0]) 
    usd_rub_bid = float(response['bid'][0][0])
    sred = (usd_rub_ask + usd_rub_bid) / 2
    mas.append(sred)
Примерно так. При обрыве связи, понятное дело выскакивает ошибка. И программа стопарится.
Можно ли как-нибудь наколдовать, что бы, при обрыве связи, программа не стопарилась, а делала паузу на 60 сек, потом проверяла связь и если ее нет, то опять стопарилась на 60 сек?

Офлайн

#5 Март 7, 2019 10:39:26

Rodegast
От: Пятигорск
Зарегистрирован: 2007-12-28
Сообщения: 2849
Репутация: +  186  -
Профиль   Отправить e-mail  

Обработка ошибки при подключении к сайту

https://pythonworld.ru/tipy-dannyx-v-python/isklyucheniya-v-python-konstrukciya-try-except-dlya-obrabotki-isklyuchenij.html



С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.

Офлайн

#6 Март 7, 2019 10:55:45

ZiG
Зарегистрирован: 2018-12-16
Сообщения: 47
Репутация: +  0  -
Профиль   Отправить e-mail  

Обработка ошибки при подключении к сайту

Rodegast
https://pythonworld.ru/tipy-dannyx-v-python/isklyucheniya-v-python-konstrukciya-try-except-dlya-obrabotki-isklyuchenij.html
Реально, ни один час потратил на изучение этого раздела, в разных учебных пособиях смотрел, и как бы не объяснялось, голову сломал. А тут все более наглядно. Спасибо.

Решение проблемы:
 import requests
import time
sred = 0
mas = []
while True:
    while True:
        try:
            url = f'https://api.exmo.com/v1/order_book/?pair=USD_RUB&limit=1'
            response = requests.get(url).json()['USD_RUB']
            response['ask'], response['bid']
            usd_rub_ask = float(response['ask'][0][0])
            usd_rub_bid = float(response['bid'][0][0])
        except:
            print('Связи нет, подождем минутку')
            time.sleep(60)
        else:
            break
    sred = (usd_rub_ask + usd_rub_bid) / 2
    mas.append(sred)
    print(mas)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version