28
28
logger = NewServerLogger ()
29
29
30
30
31
- def _threaded (conn : socket ):
31
+ def _threaded (conn : socket . socket ):
32
32
while True :
33
- buffer = conn .recv (4 )
34
- protocol = NewServerProtocol (buffer , 0 )
35
- err = protocol .decode ()
36
- if err .code != RESP_STATUS_CODE_OK :
37
- logger .error (err .message )
33
+ try :
34
+ buffer = conn .recv (4 )
35
+ protocol = NewServerProtocol (buffer , 0 )
36
+ err = protocol .decode ()
37
+ if err .code != RESP_STATUS_CODE_OK :
38
+ logger .error (err .message )
39
+ break
40
+
41
+ logger .info ("request type:{}, len:{}" , protocol .type , protocol .length )
42
+
43
+ buffer = conn .recv (protocol .length )
44
+ handler = NewServerHandle (protocol .type , buffer )
45
+ response = handler .dispatch ()
46
+ if response .code != RESP_STATUS_CODE_OK :
47
+ logger .error (response .message )
48
+
49
+ protocol = NewServerProtocol (response .data , response .type )
50
+ protocol .encode ()
51
+
52
+ logger .info ("response type:{}, len:{}" , protocol .type , protocol .length )
53
+
54
+ conn .sendall (protocol .buffer )
55
+ except socket .timeout as e :
56
+ logger .info ("connection timout: {}" , e .args .__str__ ())
57
+ break
58
+ except socket .error as e :
59
+ logger .error ("connection error: {}" , e .args .__str__ ())
38
60
break
39
-
40
- logger .info ("request type:{}, len:{}" , protocol .type , protocol .length )
41
-
42
- buffer = conn .recv (protocol .length )
43
- handler = NewServerHandle (protocol .type , buffer )
44
- response = handler .dispatch ()
45
- if response .code != RESP_STATUS_CODE_OK :
46
- logger .error (response .message )
47
-
48
- protocol = NewServerProtocol (response .data , response .type )
49
- protocol .encode ()
50
- response = protocol .buffer
51
-
52
- logger .info ("response type:{}, len:{}" , protocol .type , protocol .length )
53
-
54
- err = conn .sendall (response )
55
- if err :
56
- print (err )
57
- break
58
61
59
62
conn .close ()
60
63
@@ -74,8 +77,11 @@ def __init__(self, config: NewServerConfig):
74
77
def receive (self ):
75
78
while True :
76
79
conn , address = self .sock .accept ()
80
+ conn .settimeout (60 )
77
81
78
- NewThread (target = _threaded , args = (conn ,)).start ()
82
+ thread = NewThread (target = _threaded , args = (conn ,))
83
+ thread .setDaemon (True )
84
+ thread .start ()
79
85
80
86
def __del__ (self ):
81
87
self .sock .close ()
0 commit comments