2017-01-27 31 views
0

私は、管理されていないスクリプトを使用しています。私は減価償却に関連するいくつかの問題を解決するために努力しましたが、スクリプトはスムーズに実行されているように見えましたが、スクリプト内ではランダムな時間がかかるため、httplib2.IncompleteRead:AttributeError: 'module'オブジェクトに属性がありません 'IncompleteRead'

File "drive.py", line 169, in download_file 
    except httplib2.IncompleteRead: 
AttributeError: 'module' object has no attribute 'IncompleteRead' 

これらは私がここに

import gflags, httplib2, logging, os, pprint, sys, re, time 
import pprint 


from apiclient.discovery import build 
from apiclient.discovery import build 
from oauth2client.file import Storage 
from oauth2client.client import AccessTokenRefreshError, flow_from_clientsecrets 
from oauth2client.tools import run_flow 

を使用していますモジュールがエラー

if is_google_doc(drive_file): 
    try: 
     download_url = drive_file['exportLinks']['application/pdf'] 
    except KeyError: 
     download_url = None 
else: 
    download_url = drive_file['downloadUrl'] 
if download_url: 
    try: 
     resp, content = service._http.request(download_url) 
    except httplib2.IncompleteRead: 
     log('Error while reading file %s. Retrying...' % drive_file['title'].replace('/', '_')) 
     print 'Error while reading file %s. Retrying...' % drive_file['title'].replace('/', '_') 
     download_file(service, drive_file, dest_path) 
     return False 
    if resp.status == 200: 
     try: 
      target = open(file_location, 'w+') 
     except: 
      log("Could not open file %s for writing. Please check permissions." % file_location) 
      print "Could not open file %s for writing. Please check permissions." % file_location 
      return False 
     target.write(content) 
     return True 
    else: 
     log('An error occurred: %s' % resp) 
     print 'An error occurred: %s' % resp 
     return False 
else: 
    # The file doesn't have any content stored on Drive. 
    return False 

私はこのエラーを想定しています接続を失うとは何かを持っている原因となっているコードされていますダウンロード中は、httplib2モジュールに似ていません。

完全なコードは、可能な修正にいくつかの光を当てることができます誰にも事前にhere

ありがとうを見つけることができます。

+1

この[SO post](http://stackoverflow.com/questions/14442222/how-to-handle-incompleteread-in-python)をチェックして、try/catchループをスローすることについて言及してください。あなたのリンクを読んだり、あなたのコード内で単にHTTP/1.0リクエストを送るだけです。 [httplibを使った不完全な読み込み](http://stackoverflow.com/questions/14149100/incompleteread-using-httplib)も役に立ちます。 – Teyam

答えて

1

私はそのドライブのバックアップスクリプトを更新していて、同じエラーが発生しました。

-  except httplib2.IncompleteRead: 
-   log('Error while reading file %s. Retrying...' % drive_file['title'].replace('/', '_')) 
:これを削除

:私はまだ例外がスローされているが、それが何であるかを明らかに(とスクリプトが実行を継続できるようにする)にするために、私は、以下の変更を加えたものを働いていません

はこれでそれを置き換えます

+  except Exception as e: #httplib2.IncompleteRead: # no longer exists 
+   log(traceback.format_exc(e) + ' Error while reading file %s. Retrying...' % drive_file['title'].replace('/', '_')) 

これは、一貫して例外が発生した場合、それが無限ループに入ることが欠点を持っています。しかし、実際の例外がスローされることを明らかにするため、「except:」を適切に更新することができます。

この変更は、リポジトリ hereに表示されます。

エラーが再び発生した場合は、この回答をさらに詳細に更新します。

関連する問題