2016-08-21 3 views
0

の残りの部分を実行していない、ポーリング機能がブロックbot.polling funcitonのtry-除いブロック、私のPythonコードでコード

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のtry-以外に実行されています、スクリプトは決してステータスを出力せず、残りのコードを実行しません。

"block = True" bot.polling(none_stop=False, interval=1, block=True)を追加しようとしましたが、その場合、ポーリングはテレグラムメッセージを取得しません。

答えて

0

謝罪、私の最後の答えはされている可能性があるほど明確ではなかった。

try/exceptを使って作業しているときは、WhileルックとTry:とExcept:(そしてElse、最後にもそれらを使用している場合は)の下に字下げがあることを確認します。

次に、tryまたはexceptを実行したいアクションを探します。だから、私は何をするつもりです:

これは、実行し、毎秒1回連続してループします。ループのステータスが成功した場合は接続が表示され、そうでない場合は「失敗」が表示され、1秒後に再度ループが試行されます。エラーを返す場合は、エラーがあることを表示します。ただし、エラーが発生した場合は、True:ループのwhileループの先頭にループバックします。このため、except命令には印刷が含まれていなかったため、印刷物が得られなかったのはこのためです。例外が発生すると、コードは先頭に戻り、再度試行されます。

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キャッチループを使用して起動して実行する場合に非常に役立ちます。ここで

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レスポンスを持つオブジェクトを持っているかどうかを確認するためにINGの「お試し」していますキー「access_token」がない場合、何かが間違っていることがわかり、ユーザーには続行させません。これは、例外領域でトークンが0に設定されていることを確認してから、トップに戻ります。つまり、プログラムがアクセストークンの値を受け取るまでこのループが実行されます。

私は本当に役立つことを願っています!あなたの問題を解決するなら、それを受け入れてください!

+0

お願いしますか? – Nivek

+0

@Nivek私は答えを更新してより詳細になり、try/except/elseを支援するリソースを提供しました。これがあなたが探しているものだともっと望みたいと思っています。 – beerandsmiles

+0

@Nivekは私のスクリプトの1つで使っているTry Except Elseループの例で再び更新しました。 – beerandsmiles

関連する問題