我尝试将 python jupyter notebook 与 amazon neptune 数据库实例连接,但出现这样的错误,我该怎么办?

问题描述

代码,我来自 Amazon Neptune 教程 https://docs.aws.amazon.com/neptune/latest/userguide/access-graph-gremlin-python.html 但是,当我尝试在 Jupyter Notebook(笔记本电脑内部)中运行代码时,出现了这样的错误This is my code

---------------------------------------------------------------------------
HTTPError                                 Traceback (most recent call last)
<ipython-input-1-fae80b27d2c6> in <module>
     12 g = graph.traversal().withRemote(remoteConn)
     13 
---> 14 print(g.V().limit(2).toList())
     15 
     16 remoteConn.close()

C:\ProgramData\Anaconda3\lib\site-packages\gremlin_python\process\traversal.py in toList(self)
     56 
     57     def toList(self):
---> 58         return list(iter(self))
     59 
     60     def toSet(self):

C:\ProgramData\Anaconda3\lib\site-packages\gremlin_python\process\traversal.py in __next__(self)
     46     def __next__(self):
     47         if self.traversers is None:
---> 48             self.traversal_strategies.apply_strategies(self)
     49         if self.last_traverser is None:
     50             self.last_traverser = next(self.traversers)

C:\ProgramData\Anaconda3\lib\site-packages\gremlin_python\process\traversal.py in apply_strategies(self,traversal)
    571     def apply_strategies(self,traversal):
    572         for traversal_strategy in self.traversal_strategies:
--> 573             traversal_strategy.apply(traversal)
    574 
    575     def apply_async_strategies(self,traversal):

C:\ProgramData\Anaconda3\lib\site-packages\gremlin_python\driver\remote_connection.py in apply(self,traversal)
    147     def apply(self,traversal):
    148         if traversal.traversers is None:
--> 149             remote_traversal = self.remote_connection.submit(traversal.bytecode)
    150             traversal.remote_results = remote_traversal
    151             traversal.side_effects = remote_traversal.side_effects

C:\ProgramData\Anaconda3\lib\site-packages\gremlin_python\driver\driver_remote_connection.py in submit(self,bytecode)
     54 
     55     def submit(self,bytecode):
---> 56         result_set = self._client.submit(bytecode,request_options=self._extract_request_options(bytecode))
     57         results = result_set.all().result()
     58         side_effects = RemoteTraversalSideEffects(result_set.request_id,self._client,C:\ProgramData\Anaconda3\lib\site-packages\gremlin_python\driver\client.py in submit(self,message,bindings,request_options)
    125 
    126     def submit(self,bindings=None,request_options=None):
--> 127         return self.submitAsync(message,bindings=bindings,request_options=request_options).result()
    128 
    129     def submitAsync(self,request_options=None):

C:\ProgramData\Anaconda3\lib\site-packages\gremlin_python\driver\client.py in submitAsync(self,request_options)
    146         if request_options:
    147             message.args.update(request_options)
--> 148         return conn.write(message)

C:\ProgramData\Anaconda3\lib\site-packages\gremlin_python\driver\connection.py in write(self,request_message)
     53     def write(self,request_message):
     54         if not self._inited:
---> 55             self.connect()
     56         request_id = str(uuid.uuid4())
     57         result_set = resultset.ResultSet(queue.Queue(),request_id)

C:\ProgramData\Anaconda3\lib\site-packages\gremlin_python\driver\connection.py in connect(self)
     43             self._transport.close()
     44         self._transport = self._transport_factory()
---> 45         self._transport.connect(self._url,self._headers)
     46         self._protocol.connection_made(self._transport)
     47         self._inited = True

C:\ProgramData\Anaconda3\lib\site-packages\gremlin_python\driver\tornado\transport.py in connect(self,url,headers)
     38         if headers:
     39             url = httpclient.HTTPRequest(url,headers=headers)
---> 40         self._ws = self._loop.run_sync(
     41             lambda: websocket.websocket_connect(url,compression_options=self._compression_options))
     42 

~\AppData\Roaming\Python\python38\site-packages\tornado\ioloop.py in run_sync(self,func,timeout)
    456         if not future_cell[0].done():
    457             raise TimeoutError('Operation timed out after %s seconds' % timeout)
--> 458         return future_cell[0].result()
    459 
    460     def time(self):

~\AppData\Roaming\Python\python38\site-packages\tornado\concurrent.py in result(self,timeout)
    236         if self._exc_info is not None:
    237             try:
--> 238                 raise_exc_info(self._exc_info)
    239             finally:
    240                 self = None

~\AppData\Roaming\Python\python38\site-packages\tornado\util.py in raise_exc_info(exc_info)

~\AppData\Roaming\Python\python38\site-packages\tornado\stack_context.py in wrapped(*args,**kwargs)
    314             if top is None:
    315                 try:
--> 316                     ret = fn(*args,**kwargs)
    317                 except:
    318                     exc = sys.exc_info()

~\AppData\Roaming\Python\python38\site-packages\tornado\simple_httpclient.py in _on_timeout(self,info)
    305         error_message = "Timeout {0}".format(info) if info else "Timeout"
    306         if self.final_callback is not None:
--> 307             raise HTTPError(599,error_message)
    308 
    309     def _remove_timeout(self):

HTTPError: HTTP 599: 连接超时

这是我得到的错误。 我该怎么办?

解决方法

Amazon Neptune 在私有 VPC 内运行。这意味着您将无法从笔记本电脑连接到它,除非您设置了连接到 VPC 的方法。这可以通过通过堡垒主机、ssh 端口转发或其他方式(例如客户端 VPN)设置 ssh 隧道来完成。下面是一个如何为 Document DB 执行此操作的示例,它与 Neptune 基本相同,只是 Neptune 使用端口 8182。

https://docs.aws.amazon.com/documentdb/latest/developerguide/connect-from-outside-a-vpc.html

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...