Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Cassandra创建多个连接,而不是释放_Python_Cassandra - Fatal编程技术网

Python Cassandra创建多个连接,而不是释放

Python Cassandra创建多个连接,而不是释放,python,cassandra,Python,Cassandra,我使用的是Python Cassandra驱动程序3.15.1 我有一个运行多进程的脚本 问题是,出于某种原因,调用close\u connection(获取\u connection->运行CQL->close\u connection->然后调用end-call-close\u集群)后,连接没有正确释放。这导致数百个连接/会话保持打开状态 任何关于在何处查找该问题的提示都非常感谢 def get_connection(self, timeout = 600): self.sessio

我使用的是Python Cassandra驱动程序3.15.1

我有一个运行多进程的脚本

问题是,出于某种原因,调用close\u connection(获取\u connection->运行CQL->close\u connection->然后调用end-call-close\u集群)后,连接没有正确释放。这导致数百个连接/会话保持打开状态

任何关于在何处查找该问题的提示都非常感谢

def get_connection(self, timeout = 600):
    self.session = Cluster([self.host]).connect()
    self.session.default_timeout = timeout
    return self.session

def close_connection(self, conn):
    return conn.shutdown()

def close_cluster_connection(self):
    return self.cluster.shutdown()

每个
Cluster
对象在完成时都应该显式关闭,但这在这里是不可能的,因为您没有在
get\u connection
中保留由
Cluster([self.host])
创建的实例

close\u cluster\u connection
引用了一个
self.cluster
。如果该集群已经实例化,并且您要使用的集群实例,
get\u connection
应该如下所示

def get_connection(self, timeout = 600):
    self.session = self.cluster.connect()
    self.session.default_timeout = timeout
    return self.session

如果你不能在那里使用
self.cluster
,你必须找到一种方法来跟踪你的
cluster
实例,并在完成后将其关闭。

感谢@falcojr的提示。这确实帮助解决了50%的问题。我通过实现析构函数应用了另一种破解方法,解决了剩余50%的问题。现在所有连接正确关闭