我目前正在研究分布式计算。我的工作人员通过将结果插入 mongoDB 数据库来返回结果。代码运行良好,但连接仍然打开,并且有一刻我的系统用完了套接字。这是我的工人代码:
def worker(elt):
client=pymongo.MongoClient(MONGODB_URI)
db = client.get_default_database()
essaiElt = db['essaiElt']
#compute here
essaiElt.insert( elt.toDict())
client.close()
通过使用此命令“netstat -anbo”,我可以看到所有套接字仍然打开(超过 3000 个),工作人员的最大数量为 14,但他们必须处理超过 10 000 个任务。
...
TCP 10.130.151.11:4999 10.130.137.128:27017 En attente 0
TCP 10.130.151.11:5000 10.130.137.128:27017 En attente 0
我试图设置超时,但它没有任何效果。
如何在不重新启动数据库的情况下关闭套接字?
Python 2.7.12 Pymongo 3.3 mongoDB 3.2.10