Cassandra Python驱动程序可复制超时

2024-05-26 20:45:27 发布

您现在位置:Python中文网/ 问答频道 /正文

我们尝试在一个大型项目中使用apachecassandra,我们有一个Python脚本,它在数据库集群中运行INSERT查询。在

在测试脚本时,在开发人员笔记本电脑(MacOSX)上,它工作得很好,可以毫无问题地执行所有插入操作。在

每次在生产机器(Linux)中运行时,它总是有一个:

cassandra.OperationTimedOut: errors={}, last_host=cassandra1.example.com

我们使用DataStax Python Driver并使用多个主机(cassandra1)。example.com网站还有卡桑德拉2号。example.com网站)创建群集时。在

两台计算机在网络方面具有相同的访问类型和级别(无防火墙等)。生产服务器有4msping数据库,而开发人员笔记本电脑平均40-50。在

有什么问题吗?在


Tags: 脚本com机器数据库开发人员网站examplelinux
2条回答

问题已解决,解决方法如下:

我们有一个Python类,它基本上用作一个对象。在初始值设定项中,我们创建了集群并连接到它,然后使用self.clusterself.session等作为属性传递session/connection/cluster变量

稍后,在这个类中的一个方法中,我们调用了execute()语句self.session

def executeQuery(self, id) self.session.execute("INSERT INTO table (id) VALUES (" + str(id) + ");")

然后我们用一个空函数替换了对象初始值设定项,并将所有与Cassandra相关的函数放入executeQuery()方法中。问题已解决,未发生超时。在

最有可能的是,40-50毫秒的网络延迟减慢了脚本的速度,使它在从笔记本电脑上运行时不会使服务器过载。生产服务器离得更近,因此它们可以更快地发送垃圾邮件,并使其过载。如果您正在尽可能快地发送异步写操作的垃圾邮件,那么您可能需要每隔一段时间检查一次结果,或者只是进行速率限制,从而限制异步写入。在

相关问题 更多 >

    热门问题