在我的python代码中,轮询函数位于try-except块
中bot = telebot.TeleBot(TOKEN)
while True:
try:
status = "Conected"
bot.polling(none_stop=False, interval=1)
except:
status = "failure"
print status
#do something..
time.sleep(1)
但是当执行bot.polling
时,脚本永远不会打印状态,也不会运行剩下的代码。
我尝试添加“block = True”bot.polling(none_stop=False, interval=1, block=True)
,但在这种情况下,轮询不会收到电报信息。
答案 0 :(得分:0)
因此,在使用try /时,你需要确保你在While外观和Try:和Except下得到缩进:(而且,如果你也使用它们的话,最后也是如此)。 / p>
接下来,您希望在try或except中进行您要查找的操作。所以,这就是我要做的事情:
这将每秒运行并连续循环一次。如果循环的状态成功,它将显示已连接,否则它将打印“失败”,然后在一秒后再次尝试循环。如果它返回错误,则会打印出错误。但是,如果遇到错误,它将循环回到while:while循环的顶部。这就是为什么你没有得到一个打印,因为除了指令不包括打印。一旦发生异常,您的代码将返回到顶部并再次尝试。
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”键的对象,如果没有,那么我知道出了问题,我不让用户继续。然后将它们发送回顶部,因为在except区域中我确保将令牌设置回0.意味着此循环将一直运行,直到我的程序收到访问令牌的值。
我真的希望这会有所帮助!如果它解决了您的问题,请接受它!