1

我有一个相当大的集合并进行非索引(故意)查询,这可能需要很长时间才能返回第一批结果,或指示失败。如果在 10 秒内没有返回任何内容,我希望这些查询失败。所以我写了这个:

try:
     cur = big_collection.find(query, network_timeout=10)
     for doc in cur:
          print doc
except pymongo.errors.AutoReconnect:
     print "failure!"

这在客户端上工作正常,但是,current_op即使在超时之后,查询也会在服务器上继续执行。我在块中尝试过cur.close(),但这不起作用,可能是因为它一直存在,直到它从服务器接收到任何数据。db.kill_cursorsexceptcur.cursor_idNone

有没有办法杀死一个查询,即使它还没有返回任何数据?

4

1 回答 1

2

没有 PyMongo 包装器,但您可以使用相关的数据库命令来查询 opid 并终止操作。它看起来像:db['$cmd.sys.killop'].find_one({op:op}). 出于某种原因,这似乎不适用于 PyMongo 2.1

看:

于 2012-09-04T18:06:21.743 回答