ऐसा इसलिए है क्योंकि आप PyMongo का गलत इस्तेमाल कर रहे हैं। आप प्रत्येक क्वेरी के लिए एक नया MongoClient बना रहे हैं, जिसके लिए आपको प्रत्येक नई क्वेरी के लिए एक नया सॉकेट खोलना होगा। यह पायमोंगो के कनेक्शन पूलिंग को हरा देता है, और बेहद धीमी गति से होने के अलावा, इसका मतलब यह भी है कि आप अपने टीसीपी स्टैक की तुलना में तेजी से सॉकेट खोलते और बंद करते हैं:आप 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)