@@ -37,13 +37,15 @@ def __init__(self, addrs,
37
37
connect_now = True ,
38
38
encoding = ENCODING_DEFAULT ,
39
39
strategy_class = RoundRobinStrategy ,
40
+ get_nodes_function_name = None ,
40
41
nodes_refresh_interval = NODES_REFRESH_INTERVAL ):
41
42
self .nattempts = 2 * len (addrs ) + 1
42
43
self .strategy = strategy_class (addrs )
43
44
self .strategy_class = strategy_class
44
45
addr = self .strategy .getnext ()
45
46
host = addr ['host' ]
46
47
port = addr ['port' ]
48
+ self .get_nodes_function_name = get_nodes_function_name
47
49
self .nodes_refresh_interval = nodes_refresh_interval
48
50
self .last_nodes_refresh = 0
49
51
super (MeshConnection , self ).__init__ (host = host ,
@@ -70,19 +72,14 @@ def _opt_reconnect(self):
70
72
else :
71
73
raise NetworkError
72
74
73
- if self .authenticated :
75
+ if self .authenticated and self . get_nodes_function_name :
74
76
now = time .time ()
75
77
if now - self .last_nodes_refresh > self .nodes_refresh_interval :
76
78
self .refresh_nodes (now )
77
79
78
80
def refresh_nodes (self , cur_time ):
79
- resp = super (MeshConnection , self ).eval_ex ( 'return get_nodes ~= nil' ,
81
+ resp = super (MeshConnection , self ).call_ex ( self . get_nodes_function_name ,
80
82
[], reconnect = False )
81
- if not (resp .data and resp .data [0 ]):
82
- return
83
-
84
- resp = super (MeshConnection , self ).call_ex ('get_nodes' , [],
85
- reconnect = False )
86
83
87
84
if not (resp .data and resp .data [0 ]):
88
85
return
0 commit comments