Извините, мой последний ответ был не так ясен, как мог бы быть.
Таким образом, при работе с try/except вы должны убедиться, что у вас есть отступ под видом While и Try: и Except: (и Else, Final, если вы их тоже используете).
Затем вы хотите, чтобы действие, которое вы ищете, имело место в попытке или исключении. Итак, вот что я бы сделал:
Это будет работать и непрерывно зацикливаться один раз в секунду. Если статус цикла был успешным, он будет показывать, что он подключен, в противном случае он напечатает «сбой», а затем повторит цикл через одну секунду. Если он вернет ошибку, он напечатает, что у него есть ошибка. Однако, если вы столкнетесь с ошибкой, она вернется к началу цикла while True:. Вот почему вы не получали печать, так как инструкция exclude не включала печать. Как только произойдет исключение, ваш код вернется к началу и повторит попытку.
while True:
try:
status = "Connected"
bot.polling(none_stop=False, interval=1)
pass
except:
status = "failure"
print status
else:
print status
#do something..
time.sleep(1)
Это руководство чрезвычайно полезно для начала работы с этими циклами try-catch.
https://docs.python.org/2/tutorial/errors.html
Вот пример попытки, за исключением того, что я использую, что работает:
token = 0
while token == 0:
print("Welcome to the back office.\nYou will need to log in to contine.")
sleep(1)
print("="*5 + " Please log in " +"="*5)
print(" ")
email = raw_input("Email: ")
print(" ")
password = getpass.getpass("Password: ")
authpayload = "grant_type=password&username=" + email + "&password=" + password
login = requests.post(url+'/token', data=authpayload) #testing
token = login.json()
try:
token = token["access_token"]
pass
except:
print(" ")
print("="*5 + " ERROR " +"="*5)
print(token)
print("Sorry please try logging in again.")
logging.info("user login failed " + str(token))
logging.info("user tried email: " + email)
token = 0
sleep(1)
else:
print(" ")
print("="*5 + " You're now logged in " +"="*5)
print(" ")
logging.info("user login succeeded")
logging.info("user email: " + email)
sleep(.5)
pass
В моем случае я «пытаюсь» увидеть, есть ли в ответе json объект с ключом «access_token», если нет, то я знаю, что что-то пошло не так, и я не позволяю пользователю продолжать. Затем это отправляет их обратно наверх, поскольку в области исключения я удостоверяюсь, что токен снова установлен на 0. Это означает, что этот цикл будет выполняться до тех пор, пока моя программа не получит значение для токена доступа.
Я искренне надеюсь, что это поможет! Если это решит вашу проблему, пожалуйста, примите это!
person
beerandsmiles
schedule
21.08.2016