2017-02-14 20 views
3

これは私のコードですが、私は例外の処理方法はPythonのドキュメントで書かれていますが、ときどき何が起こるのか分かりませんが、コードはprint "SERVER RESPONSE"行に止まってしまい、転送を続行せず強制停止しなければなりません。それは例外をスローしません。これは、のtry:のブロックの後に停止するようになったばかりです。Python:urllib2のサーバーによってスローされた例外を処理する方法は?

def upload(filename1,sampleFile,unknown_path,predictiona,predictionb): 

    curr_time = (time.strftime("%H:%M:%S")) 
    curr_day = (time.strftime("%Y-%m-%d")) 

    register_openers() 

    datagen, headers = multipart_encode({"sampleFile": open(sampleFile), "name": filename1, "userID":'19','date': curr_day,'time': curr_time}) 
    print"header",headers 
    request = urllib2.Request("http://videoupload.hopto.org:5000/api/Sync_log", datagen, headers) 
    try: 
     print "SERVER RESPONSE" 
     response = urllib2.urlopen(request) 
     html=response.read() 

    except URLError , e: 
     if hasattr(e, 'reason'): 
      print 'We failed to reach a server.' 
      print 'Reason: ', e.reason 
     elif hasattr(e, 'code'): 
      print 'The server couldn\'t fulfill the request.' 
      print 'Error code: ', e.code 
    else: 
     print "response ",response 
     print "html ",html 

答えて

-1

おそらくそれは成功しtryブロックを実行し、終了されますか?あなたはそれが失敗していると思いますか? さらに、最後のelse:はインデントされていません。これはプログラム内にあるのですか?

+0

'print" SERVER RESPONSEを実行した後、 "動作を停止し、実行を一時停止します。 第2に、私の最後の 'else'は' try'ブロックの真下にあります。そのインデントが一致します。行方不明のものがある場合は教えてください。 –

+0

単純に終了するのではなく、一時停止したことをどのように知っていますか? –

+0

私はちょうど私の全プログラムの一部を投稿しているので。この機能を実行した後も大きくて他のことをやっています。私の前のコメントを読んでください。もう一度編集しました。 –

0

デフォルトでは、urllib2.urlopen()はタイムアウトせずに要求を実行します。たぶん、サーバーは単に要求に答えていないでしょうか?

+0

はい、問題になる可能性もありますが、どうすればこの問題を処理できますか? –

関連する問題