Reputation: 781
I am trying to create a neo4j object using the following code. While I run the code, I receive error. Kindly help me fix this error. I have verified that the environment variables are read correctly. I am running this on my local Ubuntu machine.
Code -
from langchain_neo4j import Neo4jGraph
import os
from dotenv import load_dotenv
load_dotenv()
neo4j_uri = os.getenv('NEO4J_URI')
print(f"Neo4j URI: {neo4j_uri}")
graph = Neo4jGraph(url= neo4j_uri,username = os.getenv('NEO4J_USERNAME'),password = os.getenv('NEO4J_PASSWORD'))
Output of the code-
Neo4j URI: neo4j+s://53XXXe0e.databases.neo4j.io
---------------------------------------------------------------------------
gaierror Traceback (most recent call last)
File ~/python3.10_venv/lib/python3.10/site-packages/neo4j/_async_compat/network/_util.py:144, in NetworkUtil._dns_resolver(address, family)
143 try:
--> 144 info = NetworkUtil.get_address_info(
145 address.host,
146 address.port,
147 family=family,
148 type=socket.SOCK_STREAM,
149 )
150 except OSError as e:
File ~/python3.10_venv/lib/python3.10/site-packages/neo4j/_async_compat/network/_util.py:130, in NetworkUtil.get_address_info(host, port, family, type, proto, flags)
128 @staticmethod
129 def get_address_info(host, port, *, family=0, type=0, proto=0, flags=0):
--> 130 return socket.getaddrinfo(host, port, family, type, proto, flags)
File /usr/lib/python3.10/socket.py:967, in getaddrinfo(host, port, family, type, proto, flags)
966 addrlist = []
--> 967 for res in _socket.getaddrinfo(host, port, family, type, proto, flags):
968 af, socktype, proto, canonname, sa = res
gaierror: [Errno -2] Name or service not known
The above exception was the direct cause of the following exception:
ValueError Traceback (most recent call last)
Cell In[1], line 6
4 from dotenv import load_dotenv
5 load_dotenv()
----> 6 graph = Neo4jGraph(
7 url = os.getenv('NEO4J_URI'),
8 username = os.getenv('NEO4J_USERNAME'),
9 password = os.getenv('NEO4J_PASSWORD')
10 )
File ~/python3.10_venv/lib/python3.10/site-packages/langchain_neo4j/graphs/neo4j_graph.py:379, in Neo4jGraph.__init__(self, url, username, password, database, timeout, sanitize, refresh_schema, driver_config, enhanced_schema)
377 # Verify connection
378 try:
--> 379 self._driver.verify_connectivity()
380 except neo4j.exceptions.ConfigurationError:
381 raise ValueError(
382 "Could not connect to Neo4j database. "
383 "Please ensure that the driver config is correct"
384 )
File ~/python3.10_venv/lib/python3.10/site-packages/neo4j/_sync/driver.py:1081, in Driver.verify_connectivity(self, **config)
1074 experimental_warn(
1075 "All configuration key-word arguments to "
1076 "verify_connectivity() are experimental. They might be "
1077 "changed or removed in any future version without prior "
1078 "notice."
1079 )
1080 session_config = self._read_session_config(config)
-> 1081 self._get_server_info(session_config)
File ~/python3.10_venv/lib/python3.10/site-packages/neo4j/_sync/driver.py:1296, in Driver._get_server_info(self, session_config)
1294 def _get_server_info(self, session_config) -> ServerInfo:
1295 with self._session(session_config) as session:
-> 1296 return session._get_server_info()
File ~/python3.10_venv/lib/python3.10/site-packages/neo4j/_sync/work/session.py:183, in Session._get_server_info(self)
181 def _get_server_info(self):
182 assert not self._connection
--> 183 self._connect(READ_ACCESS, liveness_check_timeout=0)
184 server_info = self._connection.server_info
185 self._disconnect()
File ~/python3.10_venv/lib/python3.10/site-packages/neo4j/_sync/work/session.py:136, in Session._connect(self, access_mode, **acquire_kwargs)
134 access_mode = self._config.default_access_mode
135 try:
--> 136 super()._connect(
137 access_mode, auth=self._config.auth, **acquire_kwargs
138 )
139 except asyncio.CancelledError:
140 self._handle_cancellation(message="_connect")
File ~/python3.10_venv/lib/python3.10/site-packages/neo4j/_sync/work/workspace.py:167, in Workspace._connect(self, access_mode, auth, **acquire_kwargs)
159 else:
160 # This is the first time we open a connection to a server in a
161 # cluster environment for this session without explicitly
(...)
164 # we shall use this database explicitly for all subsequent
165 # actions within this session.
166 log.debug("[#0000] _: <WORKSPACE> resolve home database")
--> 167 self._pool.update_routing_table(
168 database=self._config.database,
169 imp_user=self._config.impersonated_user,
170 bookmarks=self._get_bookmarks(),
171 auth=auth,
172 acquisition_timeout=acquisition_timeout,
173 database_callback=self._set_cached_database,
174 )
175 acquire_kwargs_ = {
176 "access_mode": access_mode,
177 "timeout": acquisition_timeout,
(...)
181 "liveness_check_timeout": None,
182 }
183 acquire_kwargs_.update(acquire_kwargs)
File ~/python3.10_venv/lib/python3.10/site-packages/neo4j/_sync/io/_pool.py:900, in Neo4jPool.update_routing_table(self, database, imp_user, bookmarks, auth, acquisition_timeout, database_callback)
890 existing_routers = set(routing_table.routers)
892 prefer_initial_routing_address = self.routing_tables[
893 database
894 ].initialized_without_writers
896 if (
897 prefer_initial_routing_address
898 and
899 # TODO: Test this state
--> 900 self._update_routing_table_from(
901 self.address,
902 database=database,
903 imp_user=imp_user,
904 bookmarks=bookmarks,
905 auth=auth,
906 acquisition_timeout=acquisition_timeout,
907 database_callback=database_callback,
908 )
909 ):
910 # Why is only the first initial routing address used?
911 return
912 if self._update_routing_table_from(
913 *(existing_routers - {self.address}),
914 database=database,
(...)
919 database_callback=database_callback,
920 ):
File ~/python3.10_venv/lib/python3.10/site-packages/neo4j/_sync/io/_pool.py:830, in Neo4jPool._update_routing_table_from(self, database, imp_user, bookmarks, auth, acquisition_timeout, database_callback, *routers)
822 log.debug(
823 (
824 "[#0000] _: <POOL> "
(...)
827 ", ".join(map(repr, routers)),
828 )
829 for router in routers:
--> 830 for address in NetworkUtil.resolve_address(
831 router, resolver=self.pool_config.resolver
832 ):
833 new_routing_table = self.fetch_routing_table(
834 address=address,
835 acquisition_timeout=acquisition_timeout,
(...)
839 auth=auth,
840 )
841 if new_routing_table is not None:
File ~/python3.10_venv/lib/python3.10/site-packages/neo4j/_async_compat/network/_util.py:196, in NetworkUtil.resolve_address(address, family, resolver)
194 yield address_dns_resolved
195 else:
--> 196 for address_dns_resolved in NetworkUtil._dns_resolver(
197 address, family=family
198 ):
199 log.debug(
200 "[#0000] _: <RESOLVE> dns resolver out: %s",
201 address_dns_resolved,
202 )
203 yield address_dns_resolved
File ~/python3.10_venv/lib/python3.10/site-packages/neo4j/_async_compat/network/_util.py:151, in NetworkUtil._dns_resolver(address, family)
144 info = NetworkUtil.get_address_info(
145 address.host,
146 address.port,
147 family=family,
148 type=socket.SOCK_STREAM,
149 )
150 except OSError as e:
--> 151 raise ValueError(f"Cannot resolve address {address}") from e
152 return _resolved_addresses_from_info(info, address._host_name)
ValueError: Cannot resolve address 53XXXe0e.databases.neo4j.io:7687
Clearing DNS with sudo resolvectl flush-caches
, did not help. At this point I am clueless what could be wrong.
Upvotes: 0
Views: 18
Reputation: 781
I learn that the instance on neo4jaura was paused. Turning it on, solved the problem.
Upvotes: 0