相关疑难解决方法(0)

PyMongo引发[errno 49]在大量查询后无法分配请求的地址

我有一个包含> 1,000,000个文档的MongoDB集合.我正在执行一个初始化.find({ my_query })来返回这些文档的子集(~25,000个文档),然后我将它放入一个list对象中.

然后我循环遍历每个对象,从列表中返回的文档中解析一些值,并通过代码使用这些解析的值执行其他查询:

def _perform_queries(query):
    conn = pymongo.MongoClient('mongodb://localhost:27017')
    try:
        coll = conn.databases['race_results']
        races = coll.find(query).sort("date", -1)
    except BaseException, err:
        print('An error occured in runner query: %s\n' % err)
    finally:
        conn.close()
        return races
Run Code Online (Sandbox Code Playgroud)

在这种情况下,我的query字典是:

{"$and": [{"opponents":
    {"$elemMatch": {"$and": [
        {"runner.name": name},
        {"runner.jockey": jockey}
    ]}}},
    {"summary.dist": "1"}
]}
Run Code Online (Sandbox Code Playgroud)

这是我的问题.我在opponents.runner.name和上创建了一个索引opponents.runner.jockey.这使查询真的非常快.然而,在连续大约10,000个查询之后,pymongo引发了一个异常:

pymongo.errors.AutoReconnect: [Errno 49] Can't assign requested address
Run Code Online (Sandbox Code Playgroud)

当我删除索引时,我没有看到此错误.但它需要0.5 seconds每个查询,在我的情况下无法使用.

有谁知道为什么[Errno 49] can't assign …

python mongodb pymongo

5
推荐指数
1
解决办法
2485
查看次数

标签 统计

mongodb ×1

pymongo ×1

python ×1