问题描述
大家晚上好,
我正在尝试通过 lambda 函数访问托管在 EC2 机器上的 neo4j 数据库。 一切运行顺利,但奇怪的是驱动程序会话中的所有代码都没有执行。我已经在连接到本地 Neo4j 实例的本地机器上测试了这段代码,一切正常。
这是一段有问题的代码,请注意代码不完整,但我希望它能让您了解它应该如何运行。
def lambda_handler(event,context):
# **This code runs**
message = (event['Records'][0]['Sns']['Message'])
data = unpack(message)
print('----------MESSAGE \n\n')
print(message)
print('----------DATA \n\n')
print(data)
preprocessor = Preprocessor(data)
events = preprocessor.preprocess_events()
print('----------EVENTS \n\n')
print(events)
driver = GraphDatabase.driver("bolt://54.229.49.225:7687",auth=('neo4j','hello'))
with driver.session() as session:
# **This code doesn't**
print('-----------------opening SESSION-----------------')
session.write_transaction(tx1)
session.write_transaction(tx2)
session.write_transaction(tx3)
driver.close()
return {
'statusCode': 200,'body': json.dumps('Loaded event <EVENT NAME>')
}
---编辑---
增加我的 lambda 函数的超时计时器后,我现在得到一个不同的错误
Function Logs
START RequestId: 09235331-d238-4150-a489-5da005858596 Version: $LATEST
Ciao
[ERROR] ServiceUnavailable: Timed out trying to establish connection to IPv4Address(('54.229.49.225',7687))
Traceback (most recent call last):
File "/var/task/lambda_function.py",line 18,in lambda_handler
driver = GraphDatabase.driver("bolt://54.229.49.225:7687",'hello'))
File "/var/task/neo4j/__init__.py",line 183,in driver
return cls.bolt_driver(parsed.netloc,auth=auth,**config)
File "/var/task/neo4j/__init__.py",line 196,in bolt_driver
return BoltDriver.open(target,line 359,in open
pool = BoltPool.open(address,pool_config=pool_config,workspace_config=default_workspace_config)
File "/var/task/neo4j/io/__init__.py",line 535,in open
seeds = [pool.acquire() for _ in range(pool_config.init_size)]
File "/var/task/neo4j/io/__init__.py",in <listcomp>
seeds = [pool.acquire() for _ in range(pool_config.init_size)]
File "/var/task/neo4j/io/__init__.py",line 549,in acquire
return self._acquire(self.address,timeout)
File "/var/task/neo4j/io/__init__.py",line 413,in _acquire
connection = self.opener(address,line 532,in opener
return Bolt.open(addr,timeout=timeout,routing_context=routing_context,**pool_config)
File "/var/task/neo4j/io/__init__.py",line 193,in open
s,pool_config.protocol_version,handshake,data = connect(
File "/var/task/neo4j/io/__init__.py",line 1052,in connect
raise last_error
File "/var/task/neo4j/io/__init__.py",line 1042,in connect
s = _connect(resolved_address,timeout,keep_alive)
File "/var/task/neo4j/io/__init__.py",line 940,in _connect
raise ServiceUnavailable("Timed out trying to establish connection to {!r}".format(resolved_address))END RequestId: 09235331-d238-4150-a489-5da005858596
REPORT RequestId: 09235331-d238-4150-a489-5da005858596 Duration: 30033.06 ms Billed Duration: 30034 ms Memory Size: 256 MB Max Memory Used: 111 MB
这表明虽然我能够从本地计算机成功运行相同的脚本,但可能存在一些连接问题
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)