2011-01-27 7 views
5

と一致しません:PymongoてAssertionError:IDSは、私が使用

  • のMongoDB 1.6.5
  • Pymongo 1.9
  • のPython 2.6.6

私はデーモンの3種類があります。 1番目のデータをWebからロードし、2番目に解析して結果を保存し、3番目のグループ結果を取得します。彼ら全員がモンゴブと協力していました。いくつかの時間第三デーモンで は(DB内のデータの大きな量があるほとんどの場合)、このような多くの例外がスローされます。

Traceback (most recent call last): 
    File "/usr/local/lib/python2.6/dist-packages/gevent-0.13.1-py2.6-linux-x86_64.egg/gevent/greenlet.py", line 405, in run 
    result = self._run(*self.args, **self.kwargs) 
    File "/data/www/spider/daemon/scripts/mainconverter.py", line 72, in work 
    for item in res: 
    File "/usr/local/lib/python2.6/dist-packages/pymongo-1.9_-py2.6-linux-x86_64.egg/pymongo/cursor.py", line 601, in next 
    if len(self.__data) or self._refresh(): 
    File "/usr/local/lib/python2.6/dist-packages/pymongo-1.9_-py2.6-linux-x86_64.egg/pymongo/cursor.py", line 564, in _refresh 
    self.__query_spec(), self.__fields)) 
    File "/usr/local/lib/python2.6/dist-packages/pymongo-1.9_-py2.6-linux-x86_64.egg/pymongo/cursor.py", line 521, in __send_message 
    **kwargs) 
    File "/usr/local/lib/python2.6/dist-packages/pymongo-1.9_-py2.6-linux-x86_64.egg/pymongo/connection.py", line 743, in _send_message_with_response 
    return self.__send_and_receive(message, sock) 
    File "/usr/local/lib/python2.6/dist-packages/pymongo-1.9_-py2.6-linux-x86_64.egg/pymongo/connection.py", line 724, in __send_and_receive 
    return self.__receive_message_on_socket(1, request_id, sock) 
    File "/usr/local/lib/python2.6/dist-packages/pymongo-1.9_-py2.6-linux-x86_64.egg/pymongo/connection.py", line 714, in __receive_message_on_socket 
    struct.unpack("<i", header[8:12])[0]) 
AssertionError: ids don't match -561338340 0 
<Greenlet at 0x2baa628: <bound method Worker.work of <scripts.mainconverter.Worker object at 0x2ba8450>>> failed with AssertionError 

誰が何このexeption原因とどのようにこの問題を解決するには伝えることができます。

ありがとうございました。

+0

[email protected]は、これが役立つと言いました。http://jira.mongodb.org/browse/PYTHON-166 –

答えて

4

これは、geventコルーチンでワーカースレッドをどのように使用しているかに関係するスレッド問題です。 pymongo接続オブジェクトが要求しなかった応答を読み取っているようです。

+0

あなたは絶対に正しいです。カーソルが出力を終了する前に、いくつかの接続がプールに戻っていることがわかりました。 –

+3

だから、これのための解決策は何ですか?私は同じ問題を抱えていて、どうやって解決するのか。 – CIF

関連する問題