sql >> Base de Datos >  >> NoSQL >> MongoDB

PyMongo plantea [errno 49] no puede asignar la dirección solicitada después de una gran cantidad de consultas

Esto se debe a que está utilizando PyMongo incorrectamente. Está creando un nuevo MongoClient para cada consulta, lo que requiere que abra un nuevo socket para cada nueva consulta. Esto anula la agrupación de conexiones de PyMongo y, además de ser extremadamente lento, también significa que abre y cierra sockets más rápido de lo que puede mantener su pila TCP:deja demasiados sockets en estado TIME_WAIT, por lo que finalmente se queda sin puertos.

Afortunadamente, la solución es simple. Cree un MongoClient y utilícelo en:

conn = pymongo.MongoClient('mongodb://localhost:27017')
coll = conn.databases['race_results']

def _perform_queries(query):
    return coll.find(query).sort("date", -1)