admin
2025-06-04 287c506725b2d970f721f80169f83c2418cb0991
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
B
Öd+0ã@sddlZddlZddlZddlZddlZddlZddlZddlZddlZddl    Z    ddl
Z
ddl Z ddl m Z ddlmZmZddlmZmZmZddlmZe ¡ZGdd„dejƒZGdd    „d    ejeƒZGd
d „d ejƒZd d „Zdd„Z dd„Z!e"dkrüdS)éN)Ú
mysql_data)Ú
RedisUtilsÚ RedisManager)Ú socket_utilÚ kpl_api_utilÚhosting_api_util)Ú JueJinHttpApic@seZdZdd„ZdS)Ú MyTCPServercCstjj|||dddS)NT)Úbind_and_activate)Ú socketserverÚ    TCPServerÚ__init__)ÚselfÚserver_addressÚRequestHandlerClass©rú1D:\workspace\GP\gp_middle_server\middle_server.pyr szMyTCPServer.__init__N)Ú__name__Ú
__module__Ú __qualname__r rrrrr    sr    c@s eZdZdS)ÚMyThreadingTCPServerN)rrrrrrrrsrcsTeZdZdZdd„Zedd„ƒZdd„Zedd    „ƒZ‡fd
d „Z    ‡fd d „Z
‡Z S)ÚMyBaseRequestHandleFcCs | ¡dS)N)Ú_MyBaseRequestHandle__init)rrrrÚsetup"szMyBaseRequestHandle.setupcCs|jr
dSd|_i|_dS)NT)Ú_MyBaseRequestHandle__initedÚ%_MyBaseRequestHandle__req_socket_dict)ÚclsrrrÚ__init%szMyBaseRequestHandle.__initcCs|g}|d}| d¡x$|D]}| |›d||›¡qW| ¡d |¡d}t |jdd¡ ¡}||krxtdƒ‚dS)NÚsignú=ú&z
JiaBei@!*.zutf-8)Úencodingu 签名出错)    ÚpopÚappendÚsortÚjoinÚhashlibÚmd5ÚencodeÚ    hexdigestÚ    Exception)rÚ    data_jsonÚlist_strrÚkÚ_MyBaseRequestHandle__strr'rrrÚ__is_sign_right,s
 
z#MyBaseRequestHandle.__is_sign_rightc
Csžd}d}| |¡}|}|r–t ¡}| d¡}| d¡r~t|dd…ƒ}d}xJ||ksz| d¡}    |t|    ƒ7}||     d¡7}qLWn| d¡}|| d¡}||fS)    NÚé
zutf-8z##éri(i)ÚrecvÚtimeÚdecodeÚ
startswithÚintÚlen)
rZskkÚdataÚ header_sizeÚbufÚ
header_strÚ
start_timeÚcontent_lengthÚ received_sizeÚr_datarrrÚ getRecvData8s"
 
 
 
 
 
zMyBaseRequestHandle.getRecvDatacs$|jd}tƒ ¡|j}xyÊ| |¡\}}|ræ|}d}yt |¡}WnLtjjk
r˜}z*|     t
  t  dddœ¡j dd¡¡wWdd}~XYnXt|dƒ|ddkrè|d    d
}|d }    tj ||    |¡|     t  ddi¡j dd¡y’xŒ| |¡\}
}y,t |
¡} | dd kr0tj | d ¡WnBtjjk
rt}z|
sX| ¡td|
|ƒWdd}~XYnXt d¡qøWWn\tk
r¶} ztj |    ¡Wdd} ~ XYn.tk
râ}zt |¡Wdd}~XYnXqè|ddkrBz"|d } t | |d|d    ¡Wd|     t
  t  ddi¡j dd¡¡Xqè|ddkr˜z|d    }|d    }td|ƒWd|     t
  t  ddi¡j dd¡¡Xqè|ddkry |d    }|d}|d    }d}|dkràt  ddi¡}nº|dkrš|d}|d}|d}| d¡}t|ƒ ¡}t t!|ƒ}||g}|rzt"|ƒt#ksLt"|ƒt$krpt$|ƒ}x$|D]}| %|¡qZWn
| %|¡t#|ƒ}||Ž}
t  d|
dœ¡}|     t
  |j dd¡¡WnVtk
r
}z6t |¡|     t
  t  dt&|ƒdœ¡j dd¡¡Wdd}~XYnXqè|ddkr,y²|d    }|d    }|d}|d}| d¡}t' (¡}t ||ƒ}g}|r–t"|ƒt#ks‚t"|ƒt$krŒt$|ƒ}n
| %|¡t#|ƒ}||Ž}
t  d|
dœ¡}|     t
  |j dd¡¡WnVtk
r&}z6t |¡|     t
  t  dt&|ƒdœ¡j dd¡¡Wdd}~XYnXqè|ddkrîyZ|d    }|d    }|d}| d ¡}t) ||¡}
t  d|
dœ¡}|     t
  |j dd¡¡WnVtk
rê}z6t |¡|     t
  t  dt&|ƒdœ¡j dd¡¡Wdd}~XYnXnö|dd!kr°yZ|d    }|d    }|d"}| d    ¡}t* ||¡}
t  d|
dœ¡}|     t
  |j dd¡¡WnVtk
r¬}z6t |¡|     t
  t  dt&|ƒdœ¡j dd¡¡Wdd}~XYnXn4|dd#krè|d    }|d}|d$krÚn
|d%krènPWqtk
r}zt |¡PWdd}~XYqXqWdS)&NréduJSON解析失败)ÚcodeÚmsgzutf-8)r!ÚtypeÚregisterr9Ú client_typeÚridÚheartÚ    client_iduJSON解析出错éÚresponseÚ
request_idrCZl2_subscript_codesÚredisÚctyper0Z
queue_sizeÚcmdÚdbÚkeyÚargs)rCr9ÚmysqlZjuejinÚpathÚparamsÚkplÚurlÚtradeÚorderÚ cancel_order)+Úclient_addressÚsuperÚhandleÚrequestrAÚjsonÚloadsÚdecoderÚJSONDecodeErrorÚsendallrÚ load_headerÚdumpsr(ÚprintÚsocket_managerÚClientSocketManagerÚ
add_clientrIÚcloser4ÚsleepÚConnectionResetErrorÚ
del_clientr*ÚloggingÚ    exceptionrÚ set_responseÚgetrÚgetRedisÚgetattrrrEÚtupleÚlistr#ÚstrrÚMysqldbrr)rÚhostÚskr9ÚheaderÚdata_strr+ÚerGrHÚresultÚ
resultJSONÚeerJÚdatasrOZ
result_strrQrPrRrSrNÚmethodZargs_ÚarTZpath_rVrXZdata_)Ú    __class__rrr^Ms
 
 
 ((
 
 
 
 
 
 
6
 
 
 
 
6
 
4
 
4
 
 
zMyBaseRequestHandle.handlecstƒ ¡dS)N)r]Úfinish)r)r„rrr…òszMyBaseRequestHandle.finish) rrrrrÚ classmethodrÚ#_MyBaseRequestHandle__is_sign_rightrAr^r…Ú __classcell__rr)r„rrs   &rc    Cs8x2z ytj ¡Wn YnXWdt d¡XqWdS)Nr2)rhriÚdel_invalid_clientsr4rlrrrrÚclear_invalid_clientös 
rŠcCsL|dk    rH|dk    rHx6y$| ¡}|r4t |¡}td|ƒWqYqXqWdS)Nu收到来自L1的数据:)r3r`rarg)Z
pipe_tradeZpipe_l1ÚvalrrrÚ__recv_pipe_l1s
rŒcCs<tdƒtjdd„dd}| ¡d}t|tƒ}| ¡dS)Nzcreate MiddleServercSstƒS)N)rŠrrrrÚ<lambda>ózrun.<locals>.<lambda>T)ÚtargetÚdaemon)z0.0.0.0i')rgÚ    threadingÚThreadÚstartrrÚ serve_forever)Út1ÚladdrÚ    tcpserverrrrÚrun s 
r˜Ú__main__)#Údatetimer&Úior`roÚqueueÚrandomÚsocketr r‘r4rhrQrZdb.redis_managerrrÚutilsrrrZutils.juejin_utilrÚQueueZtrade_data_request_queuer r    ÚThreadingMixInrÚBaseRequestHandlerrrŠrŒr˜rrrrrÚ<module>s2  X