66
77from fakeredis import FakeRedis
88from fakeredis import FakeServer
9- from fakeredis .typing import VersionType , ServerType
9+ from fakeredis ._typing import VersionType , ServerType
1010
1111LOGGER = logging .getLogger ("fakeredis" )
1212LOGGER .setLevel (logging .DEBUG )
13+ # logging.basicConfig(level=logging.DEBUG)
1314
1415
1516def to_bytes (value ) -> bytes :
@@ -90,17 +91,23 @@ def setup(self) -> None:
9091 self .server .clients [self .client_address ] = self .current_client
9192
9293 def handle (self ):
94+ LOGGER .debug (f"+++ { self .client_address [0 ]} connected" )
9395 while True :
9496 try :
9597 self .data = self .reader .load ()
9698 LOGGER .debug (f">>> { self .client_address [0 ]} : { self .data } " )
99+ if len (self .data ) == 1 and self .data [0 ].upper () == b"SHUTDOWN" :
100+ LOGGER .debug (f"*** { self .client_address [0 ]} requested shutdown" )
101+ break
97102 res = self .current_client .connection .execute_command (* self .data )
98103 LOGGER .debug (f"<<< { self .client_address [0 ]} : { res } " )
99104 self .writer .dump (res )
100105 except Exception as e :
101106 LOGGER .debug (f"!!! { self .client_address [0 ]} : { e } " )
102107 self .writer .dump (e )
103108 break
109+ self .server .socket .close ()
110+ self .server .shutdown ()
104111
105112 def finish (self ) -> None :
106113 del self .server .clients [self .current_client .client_address ]
@@ -116,6 +123,7 @@ def __init__(
116123 server_version : VersionType = (8 , 0 ),
117124 ):
118125 super ().__init__ (server_address , TCPFakeRequestHandler , bind_and_activate )
126+ self .allow_reuse_address = True
119127 self .fake_server = FakeServer (server_type = server_type , version = server_version )
120128 self .client_ids = count (0 )
121129 self .clients : Dict [int , FakeRedis ] = dict ()
0 commit comments