0

asyncmongo クエリの単体テストを試みています。wait() を呼び出すと、以下のエラーが発生します。これは、asyncmongo が 2 つの引数でコールバックを呼び出すためですか?

ファイル "~/envs/test/local/lib/python2.7/site-packages/tornado/testing.py"、223 行目、stop assert _arg が None または kwargs でない

class MyTestCase2(AsyncTestCase):
    def test_async_mongo(self):
        self.db = asyncmongo.Client(pool_id='mydb', host='127.0.0.1', port=27017, maxcached=10, maxconnections=50, dbname='bench')
        self.db["ss"].insert({"a": "1"}, callback=self.stop)
        self.wait()
4

1 に答える 1

0

はい、それは AsyncTestCase が 1 つの引数の関数を期待し、asyncmongo が 2 つを使用するためです。この種の問題の一般的な解決策は、アダプター関数です。

self.db["ss"].insert({"a": "1"},
    callback=lambda response, error: self.stop((response, error)))
response, error = self.wait()

また、余談ですが、asyncmongo の代わりに motor を使用することを検討してください。Motor は、コルーチンなどの最新の Tornado イディオムで少しうまく機能します。

于 2013-10-06T01:05:08.233 に答える