2016-09-02 8 views
1

私は非常に簡単なスキャンのように思っていますが、奇妙な例外が発生しています。スキャンによって生成されたジェネレータが例外を起こしているように思えますが、理由はわかりません。私はtry/exceptで私のforループの内部をラップしようとしましたが、それでも例外をスローするので、私はそれがesを打つときに死んでいると推測しています。AuthorizationException:<例外str()が失敗しました> Scan on

old_stuff_query = {"query": {"filtered": { 
    "filter": { 
     "range": { 
      "expire_on": {'lte': datetime.datetime.now() - datetime.timedelta(weeks=53)}} 

    }}}} 

scanResp = scan(client=es, query=old_stuff_query, scroll="1m", index="myIndex", doc_type="myDoc") 
counter = 0 
for resp in scanResp: 
    try: 
     print("YAH") 
    except: 
     print("BOO") 

しかし、私は、次を得る:ここでは何が起こっているか識別するのに役立つことができれば、私が持っているものである

for resp in scanResp: 
    File "/home/will/.virtualenvs/side_project/local/lib/python2.7/site-packages/elasticsearch/helpers/__init__.py", line 314, in scan 
    client.clear_scroll(body={'scroll_id': [scroll_id]}, ignore=(404,)) 
    File "/home/will/.virtualenvs/side_project/local/lib/python2.7/site-packages/elasticsearch/client/utils.py", line 69, in _wrapped 
    return func(*args, params=params, **kwargs) 
    File "/home/will/.virtualenvs/side_project/local/lib/python2.7/site-packages/elasticsearch/client/__init__.py", line 688, in clear_scroll 
    params=params, body=body) 
    File "/home/will/.virtualenvs/side_project/local/lib/python2.7/site-packages/elasticsearch/transport.py", line 327, in perform_request 
    status, headers, data = connection.perform_request(method, url, params, body, ignore=ignore, timeout=timeout) 
    File "/home/will/.virtualenvs/side_project/local/lib/python2.7/site-packages/elasticsearch/connection/http_requests.py", line 84, in perform_request 
    self._raise_error(response.status_code, raw_data) 
    File "/home/will/.virtualenvs/side_project/local/lib/python2.7/site-packages/elasticsearch/connection/base.py", line 113, in _raise_error 
    raise HTTP_EXCEPTIONS.get(status_code, TransportError)(status_code, error_message, additional_info) 
elasticsearch.exceptions.AuthorizationException: <exception str() failed> 

最もイライラする部分は、これは完全にランダムに起こるです。それは10k未満のドキュメントと250k個以上のドキュメントの後でエラーを出しました。どんな助けも素晴らしいだろう、ありがとう!

+0

私は同じ問題に遭遇しました。これはおそらくPython2/python3の互換性のために(将来的に)追加されたユニコード処理のようです。純粋なpython2.7では動作するようです。 –

答えて

0

だから私も同じエラーを持っていた理由が見つかりました:あなたはSTR特別で独自のクラスを作成する場合 を、このメソッドまたは他のと呼ばれる方法でそれを作るしようとしたものからインスタンスでエラーをスロー文字列は、エラーメッセージは「()が失敗した<例外STR>」でスワップアウトされます:あなたのケースでは

>>> class X: 
...  def __str__(self): 
...   raise ValueError(self) 
... 
>>> print(X()) 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "<stdin>", line 3, in __str__ 
ValueError: <exception str() failed> 

API側のずさんなプログラミングのようです。

関連する問題