Това е така, защото използвате PyMongo неправилно. Вие създавате нов MongoClient за всяка заявка, което изисква да отворите нов сокет за всяка нова заявка. Това побеждава обединяването на връзките на PyMongo и освен че е изключително бавно, това също означава, че отваряте и затваряте сокети по-бързо, отколкото вашият TCP стек може да поддържа:оставяте твърде много сокети в състояние TIME_WAIT, така че в крайна сметка да останете без портове.
За щастие поправката е проста. Създайте един MongoClient и го използвайте навсякъде:
conn = pymongo.MongoClient('mongodb://localhost:27017')
coll = conn.databases['race_results']
def _perform_queries(query):
return coll.find(query).sort("date", -1)