2016-07-19 5 views
1

私には機能があります。この関数はいくつかのスレッドで開始されます。自分のエラーメッセージを表示しようとしました。しかし、私が何をするかは重要ではありません。 My機能:Python:なぜトレースバックが印刷されますか?

def getSuggestengineResultForThree(suggestengine, seed, dynamoDBLocation): 
    results[seed][suggestengine] = getsuggestsforsearchengine(seed, suggestengine) 

    for keyword_result in results[seed][suggestengine]: 
     o = 0 
     while True: 
      try: 
       allKeywords.put_item(
        Item={ 
         'keyword': keyword_result 
        } 
       ) 
       break 
      except ProvisionedThroughputExceededException as pe: 
       if (o > 9): 
        addtoerrortable(keyword_result) 
        print('ProvisionedThroughputExceededException 10 times in getSuggestengineResultForThree for allKeywords') 
        break 
       sleep(1) 
       o = o + 1 
       print("ProvisionedThroughputExceededException in getSugestengineResult") 

しかし、私はすべてのスレッドのために、このような出力を得る:

Exception in thread Thread-562: 
Traceback (most recent call last): 
    File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/threading.py", line 914, in _bootstrap_inner 
self.run() 
    File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/threading.py", line 862, in run 
self._target(*self._args, **self._kwargs) 
    File "/Users/iTom/ownCloud/Documents/Workspace/PyCharm/Keywords/TesterWithDB.py", line 362, in getSuggestengineResultForThree 
'keyword': keyword_result 
    File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/boto3/resources/factory.py", line 518, in do_action 
response = action(self, *args, **kwargs) 
    File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/boto3/resources/action.py", line 83, in __call__ 
response = getattr(parent.meta.client, operation_name)(**params) 
    File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/botocore/client.py", line 252, in _api_call 
return self._make_api_call(operation_name, kwargs) 
    File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/botocore/client.py", line 542, in _make_api_call 
raise ClientError(parsed_response, operation_name) 
botocore.exceptions.ClientError: An error occurred (ProvisionedThroughputExceededException) when calling the PutItem operation: The level of configured provisioned throughput for the table was exceeded. Consider increasing your provisioning level with the UpdateTable API 

を誰かが私が代わりにトレースバックの自分のプリントを得るために助けることができますか? :)

答えて

0

ProvisionedThroughputExceededExceptionは実際にはエラーではない可能性があります。試してください:

except botocore.exceptions.ClientError as pe: 

これでうまくいかない場合は、エラーが発生している行を特定して、そこにexcept文を入れてください。

2

この回答はあなたの質問に少し遅れていますが、ここで誰もこの回答を探している場合です。

boto3がスローする例外は、Neilが回答した場合のbotocore.exceptions.ClientErrorです。ただし、ClientErrorが別の問題の可能性があるため、応答エラーコードで 'ProvisionedThroughputExceededException'を確認する必要があります。

from botocore.exceptions import ClientError 

except ClientError as e: 
    if e.response['Error']['Code'] != 'ProvisionedThroughputExceededException': 
    raise 
    # do something else with 'e' 

私はPython 2.7を使用していますが、それは違いがあるかもしれません。私が受け取る例外が既に例外から異なっている(9回まで)再試行をboto3やっていることを示唆している:エラーが発生した

(ProvisionedThroughputExceededException)PutItem操作呼び出すとき(到達した最大再試行:9):テーブルの構成されたプロビジョニングされたスループットのレベルを超えました。 UpdateTable APIを使用してプロビジョニングレベルを上げることを検討してください。

関連する問題