gpt4 book ai didi

python - 无法使用 DataStax Python 驱动程序远程连接到 Cassandra

转载 作者:太空宇宙 更新时间:2023-11-04 03:32:23 24 4
gpt4 key购买 nike

我无法远程(从我的笔记本电脑)连接到 Cassandra(在 EC2 节点上运行)。当我为 Cassandra 使用 DataStax Python 驱动程序时:

from cassandra.cluster import Cluster
cluster = Cluster(['10.X.X.X'], port=9042)
cluster.connect()

我得到:

Traceback (most recent call last):
File "/Users/user/virtualenvs/test/lib/python2.7/site-packages/IPython/core/interactiveshell.py", line 3035, in run_code
exec(code_obj, self.user_global_ns, self.user_ns)
File "<ipython-input-23-dc85f20fd4f5>", line 1, in <module>
session = cluster.connect()
File "/Users/user/virtualenvs/test/lib/python2.7/site-packages/cassandra/cluster.py", line 755, in connect
self.control_connection.connect()
File "/Users/user/virtualenvs/test/lib/python2.7/site-packages/cassandra/cluster.py", line 1868, in connect
self._set_new_connection(self._reconnect_internal())
File "/Users/user/virtualenvs/test/lib/python2.7/site-packages/cassandra/cluster.py", line 1903, in _reconnect_internal
raise NoHostAvailable("Unable to connect to any servers", errors)
NoHostAvailable: ('Unable to connect to any servers', {'10.X.X.X': OperationTimedOut('errors=None, last_host=None',)})

但 Cassandra 正在运行,因为 nodetool status 给我:

UN 127.0.0.1 124.18 KB 256 100.0% 4d973e17-ae08-3aa1-81d2-605b92753694 rack1

Cassandra 似乎也在监听 9042 端口:

netstat -nltp | grep 9042

tcp6 0 0 0.0.0.0:9042 :::* LISTEN -

而且我可以从笔记本电脑远程登录到 Cassandra:

$ telnet 10.X.X.X 9042
Trying 10.X.X.X...
Connected to ip-10-X-X-X.
Escape character is '^]'.

我的 cassandra.yaml 中的相关亮点:

start_native_transport: true
rpc_address: 0.0.0.0
rpc_port: 9160
broadcast_rpc_address: 10.X.X.X

/var/log/cassandra/system.log 没有任何用处。

编辑:我还可以在服务器上使用 cqlsh 127.0.0.1 9042 连接到 Cassandra,在我的笔记本电脑上使用 cqlsh 10.X.X.X 9042 没有任何问题。


解决方案

出于某种原因,看起来我测试脚本的地方(PyCharm 中的 Python 控制台)是我的脚本唯一不起作用的地方。在 PyCharm 或 Python/iPython 交互模式下作为脚本运行没有问题。我将留下这个问题,因为它包含一个相当完整的 Python 到 Cassandra 连接故障排除 list 。

最佳答案

如果 control connection timeout 可以抛出这样的异常被超过了。尝试增加它或将其设置为 None 以完全禁用此超时。例如:

from cassandra.cluster import Cluster
cluster = Cluster(['127.0.0.1'], control_connection_timeout=10, port=9042)
cluster.connect()

关于python - 无法使用 DataStax Python 驱动程序远程连接到 Cassandra,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30608548/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com