【发布时间】:2014-06-14 04:26:06
【问题描述】:
下面的例子:
from cassandra.cluster import Cluster
from cassandra.decoder import *
import multiprocessing
def async_query_process(lock, i, process_num):
if i < process_num:
lock.acquire()
cluster = Cluster(['neptune'])
session = cluster.connect('mercure')
session.row_factory = tuple_factory
lock.release()
process = multiprocessing.Process(name='process' + str(i+1),
target=async_query_process,
args=(lock, i+1, 2))
process.start()
lock = multiprocessing.Lock()
process = multiprocessing.Process(name='process' + str(0), target=async_query_process,# cluster_ip_list = self.cluster_ip_list, keyspace=self.keyspace,
args=(lock, 0, 2))
process.start()
给出以下错误:
Traceback (most recent call last):
File "/usr/lib/python2.7/multiprocessing/process.py", line 258, in _bootstrap
self.run()
File "/usr/lib/python2.7/multiprocessing/process.py", line 114, in run
self._target(*self._args, **self._kwargs)
File "test_api.py", line 14, in async_query_process
session = cluster.connect('mercure')
File "/home/nkou/workProd/local/lib/python2.7/site-packages/cassandra/cluster.py", line 483, in connect
self.control_connection.connect()
File "/home/nkou/workProd/local/lib/python2.7/site-packages/cassandra/cluster.py", line 1369, in connect
self._set_new_connection(self._reconnect_internal())
File "/home/nkou/workProd/local/lib/python2.7/site-packages/cassandra/cluster.py", line 1405, in _reconnect_internal
raise NoHostAvailable("Unable to connect to any servers", errors)
NoHostAvailable: ('Unable to connect to any servers', {'neptune': OperationTimedOut('errors=Timed out creating new connection, last_host=None',)})
datastax python驱动文档中提到集群和会话实例应该在fork之后创建,这就是为什么我必须使用那种嵌套的子进程结构。
我有点卡在这里,也许我会切换回以前工作的 cassandra-python 驱动程序。
谢谢!
尼可
【问题讨论】:
-
您是否尝试在端口 9042 上远程登录到海王星?您是否尝试过将 neptune 替换为服务器的 IP 以查看是否可行?
-
嗨,亚历克斯!抱歉我的回答延迟:是的,我试过了,它没有任何改变。