1 from __future__
import absolute_import
8 import neo4j.exceptions
10 import neo4j.v1.direct
15 logger = logging.getLogger(__name__)
26 (
'max_attempts', int),
30 value = config.get(
'neo4j', key)
32 except (ConfigParser.NoOptionError, ConfigParser.NoSectionError):
34 except TypeError
as e:
37 setattr(cls, attr, value)
47 time.sleep(self.
delay)
53 def run(self, statement, parameters=None, **kwargs):
56 while retry.can_retry():
58 result = super(Neo4jSession, self).
run(
59 statement, parameters, **kwargs)
60 except neo4j.exceptions.TransientError:
68 RetryConfig.configure(config)
73 'password':
'neo4pass' 80 config_section =
'neo4j' 84 for option
in (
'host',
'login',
'password'):
85 name = env_keys_map.get(option, option)
86 value = os.environ.get(name)
88 name = config_keys_map.get(option, option)
89 value = config.get(config_section, name)
93 uri_format =
"bolt://{login}:{password}@{host}:7687".format
94 uri = uri_format(**args)
96 args[
'password'] =
'*' * 5
97 logger.info(
'NEO4j connect %s', uri_format(**args))
98 return py2neo.Graph(uri)
102 neo4j.v1.direct.Session = Neo4jSession