MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

PyMongo levanta [errno 49] não pode atribuir o endereço solicitado após um grande número de consultas


Isso ocorre porque você está usando o PyMongo incorretamente. Você está criando um novo MongoClient para cada consulta, o que exige que você abra um novo soquete para cada nova consulta. Isso anula o pool de conexões do PyMongo e, além de ser extremamente lento, também significa que você abre e fecha soquetes mais rápido do que sua pilha TCP pode acompanhar:você deixa muitos soquetes no estado TIME_WAIT e, eventualmente, fica sem portas.

Felizmente, a correção é simples. Crie um MongoClient e use-o por toda parte:
conn = pymongo.MongoClient('mongodb://localhost:27017')
coll = conn.databases['race_results']

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