mongodb 클러스터에 연결하는 데 새 ReplicaSetConnection 메서드를 사용하고 있습니다. 변경 사항은 실제로 pymongo.Connection을 pymongo.ReplicaSetConnection으로 대체하는 것으로 바뀝니다. 내 목적에 맞게 연결을 사용하고 연결에 end_request를 호출하여 연결에서 disconnect()를 호출하기 전에 연결을 플러시하는지 확인합니다. 이것은 장기 실행 후에 많은 수의 반 연결 소켓을 갖지 않도록합니다. 이것은 Connection을 사용할 때 훌륭하게 작동하지만 ReplicaSetConnection을 사용할 때 pymongo는 replicaSetConnection 객체에 대해 이것을 확실히 호출하고 있음에도 불구하고 데이터베이스 객체에서 end_request()를 실행하려고하고 있다고 불평합니다. 이것은 pymongo에서 새로운 것이거나 드라이버에서 이러한 오류입니까? 다음은 내가 겪고있는 문제를 수동으로 실행 한 것입니다.mongodb : ReplicaSetConnection에서 end_request를 호출하면 데이터베이스 오류가 발생합니다.
>>> import pymongo
>>> s = pymongo.ReplicaSetConnection("192.168.1.1:27017, 192.168.1.2:27017", replicaSet='rep1', safe=True)
>>> s
ReplicaSetConnection([u'192.168.1.1:27017', u'192.168.1.2:27017'])
>>> s.read_preference = pymongo.ReadPreference.SECONDARY
>>> s
ReplicaSetConnection([u'192.168.1.1:27017', u'192.168.1.2:27017'])
>>> type(s)
<class 'pymongo.replica_set_connection.ReplicaSetConnection'>
>>> d = s['test']
>>> s.end_request()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "build/bdist.linux-x86_64/egg/pymongo/database.py", line 696, in __call__
TypeError: 'Database' object is not callable. If you meant to call the 'end_request' method on a 'Connection' object it is failing because no such method exists.
>>> s.disconnect()
>>> s
ReplicaSetConnection([u'192.168.1.1:27017', u'192.168.1.2:27017'])