44This module provides low-level API for Tarantool
55'''
66
7- import ctypes
87import errno
98import socket
109import time
1817 RequestPing ,
1918 RequestSelect ,
2019 RequestUpdate )
21- from tarantool .space import Space
22- from tarantool .const import *
23- from tarantool .error import *
24- from tarantool .schema import *
25-
2620
21+ from tarantool .space import Space
22+ from tarantool .const import (
23+ struct_L ,
24+ SOCKET_TIMEOUT ,
25+ RECONNECT_MAX_ATTEMPTS ,
26+ RECONNECT_DELAY ,
27+ RETRY_MAX_ATTEMPTS ,
28+ BOX_RETURN_TUPLE ,
29+ BOX_ADD ,
30+ BOX_REPLACE ,
31+ REQUEST_TYPE_PING
32+ )
33+ from tarantool .error import (
34+ NetworkError ,
35+ DatabaseError ,
36+ warn ,
37+ RetryWarning ,
38+ NetworkWarning
39+ )
40+ from tarantool .schema import Schema
2741
2842class Connection (object ):
2943 '''\
@@ -62,15 +76,13 @@ def __init__(self, host, port,
6276 if connect_now :
6377 self .connect ()
6478
65-
6679 def close (self ):
6780 '''\
6881 Close connection to the server
6982 '''
7083 self ._socket .close ()
7184 self ._socket = None
7285
73-
7486 def connect (self ):
7587 '''\
7688 Create connection to the host and port specified in __init__().
@@ -93,7 +105,6 @@ def connect(self):
93105 except socket .error as e :
94106 raise NetworkError (e )
95107
96-
97108 def _read_response (self ):
98109 '''
99110 Read response from the transport (socket)
@@ -117,8 +128,6 @@ def _read_response(self):
117128
118129 return buf [0 :12 ], buf [12 :]
119130
120-
121-
122131 def _send_request_wo_reconnect (self , request , space_name = None , field_defs = None , default_type = None ):
123132 '''\
124133 :rtype: `Response` instance
@@ -152,15 +161,13 @@ def _opt_reconnect(self):
152161 if e .errno == errno .EAGAIN :
153162 break
154163 else :
155- time .slelep (self .reconnect_delay )
164+ time .sleep (self .reconnect_delay )
156165 self .connect ()
157166 warn ("%s : Reconnect attempt %d of %d" % (e .message , attempt , self .reconnect_max_attempts ), NetworkWarning )
158167 if attempt == self .reconnect_max_attempts :
159168 raise
160169 attempt += 1
161170
162-
163-
164171 def _send_request (self , request , space_name = None , field_defs = None , default_type = None ):
165172 '''\
166173 Send the request to the server through the socket.
@@ -173,8 +180,7 @@ def _send_request(self, request, space_name = None, field_defs = None, default_t
173180 '''
174181 assert isinstance (request , Request )
175182
176- connected = True
177- attempt = 1
183+
178184 self ._opt_reconnect ()
179185 response = self ._send_request_wo_reconnect (request , space_name , field_defs , default_type )
180186
@@ -236,10 +242,10 @@ def replace(self, space_name, values, return_tuple):
236242 :type values: tuple
237243 :param return_tuple: True indicates that it is required to return the inserted tuple back
238244 :type return_tuple: bool
239-
245+
240246 :rtype: `Response` instance
241247 '''
242- self ._insert (space_name , values , (BOX_REPLACE_TUPLE if return_tuple else 0 ) | BOX_REPLACE )
248+ self ._insert (space_name , values , (BOX_RETURN_TUPLE if return_tuple else 0 ) | BOX_REPLACE )
243249
244250 def store (self , space_name , values , return_tuple ):
245251 '''
@@ -255,7 +261,7 @@ def store(self, space_name, values, return_tuple):
255261
256262 :rtype: `Response` instance
257263 '''
258- self ._insert (space_name , values , (BOX_REPLACE_TUPLE if return_tuple else 0 ))
264+ self ._insert (space_name , values , (BOX_RETURN_TUPLE if return_tuple else 0 ))
259265
260266 def insert (self , space_name , values , return_tuple ):
261267 '''
@@ -271,8 +277,7 @@ def insert(self, space_name, values, return_tuple):
271277
272278 :rtype: `Response` instance
273279 '''
274- self ._insert (space_name , values , (BOX_REPLACE_TUPLE if return_tuple else 0 ) | BOX_ADD )
275-
280+ self ._insert (space_name , values , (BOX_RETURN_TUPLE if return_tuple else 0 ) | BOX_ADD )
276281
277282 def delete (self , space_name , key , return_tuple = False ):
278283 '''\
@@ -293,7 +298,6 @@ def delete(self, space_name, key, return_tuple=False):
293298 request = RequestDelete (self , space_name , key , return_tuple )
294299 return self ._send_request (request , space_name )
295300
296-
297301 def update (self , space_name , key , op_list , return_tuple = False ):
298302 '''\
299303 Execute UPDATE request.
@@ -317,7 +321,6 @@ def update(self, space_name, key, op_list, return_tuple=False):
317321 request = RequestUpdate (self , space_name , key , op_list , return_tuple )
318322 return self ._send_request (request , space_name )
319323
320-
321324 def ping (self , notime = False ):
322325 '''\
323326 Execute PING request.
@@ -339,7 +342,6 @@ def ping(self, notime=False):
339342 return "Success"
340343 return t1 - t0
341344
342-
343345 def _select (self , space_name , index_name , values , offset = 0 , limit = 0xffffffff ):
344346 '''\
345347 Low level version of select() method.
@@ -365,7 +367,6 @@ def _select(self, space_name, index_name, values, offset=0, limit=0xffffffff):
365367 response = self ._send_request (request , space_name )
366368 return response
367369
368-
369370 def select (self , space_name , values = None , ** kwargs ):
370371 '''\
371372 Execute SELECT request.
@@ -383,7 +384,7 @@ def select(self, space_name, values=None, **kwargs):
383384 :type limit: int
384385
385386 :rtype: `Response` instance
386-
387+
387388 Select one single record (from space=0 and using index=0)
388389 >>> select(0, 0, 1)
389390
@@ -425,7 +426,6 @@ def select(self, space_name, values=None, **kwargs):
425426
426427 return self ._select (space_name , index , values , offset , limit )
427428
428-
429429 def space (self , space_name ):
430430 '''\
431431 Create `Space` instance for particular space
@@ -439,4 +439,3 @@ def space(self, space_name):
439439 :rtype: `Space` instance
440440 '''
441441 return Space (self , space_name )
442-
0 commit comments