Administrator
2025-06-09 de70aedd22263814caddd6be760d3200bb451415
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
B
*c¾"ã@s¦ddlZddlZddlZddlZddlZddlZddlZddlZddlZddl    Z    ddl
Z
ddl Z ddl Z ddl mZGdd„deƒZdd„Zdd„Zed    kr¢eƒdS)
éN)Úlogger_code_operatec@s’eZdZdZe ¡Ze ¡Z    e
dd„ƒZ e
dd„ƒZ e dd„ƒZe
dd    „ƒZe d
d „ƒZdd d „Zdd„Zdd„Zdd„Ze
dd„ƒZdd„ZdS)Ú L2CodeOperateNcCs
|j ¡S)N)Úredis_manager_ÚgetRedis)Úcls©rú%D:\workspace\trade\l2_code_operate.pyrszL2CodeOperate.getRediscOs*t|dƒs |||Ž}t|d|ƒt|dƒS)NÚins)ÚhasattrÚsetattrÚgetattr)rÚargsÚkwargsÚ    insObjectrrrÚ get_instances
 
 zL2CodeOperate.get_instancec
CsÔdt|ƒ|dœdœ}t d |||¡¡t |¡zyXt ||¡}t d ||||¡¡t     |¡}|ddkrŠt 
|||¡t   ||d¡Wn2t k
r¾}zt d    t|ƒ¡Wdd}~XYnXWdt |¡XdS)
NÚ    setGPCode)ÚindexÚcode)ÚactionÚdatau,setGPCode:clientid-{}  position-{} code-{}u:setGPCode结束({}):clientid-{}  position-{} code-{}rréusetGPCode出错:{})ÚintrÚinfoÚformatÚgpcode_managerÚ set_operateÚserverÚsend_msgÚjsonÚloadsÚset_listen_code_by_posrÚset_operate_code_stateÚ    ExceptionÚerrorÚstrÚ
rm_operate)Ú    client_idÚpositionÚgpcoderÚresultÚjsonDataÚerrrr$s
 
 &zL2CodeOperate.setGPCodecCsB|j ¡z&tjdd„d}| d¡| ¡Wd|j ¡XdS)NcSst ¡S)N)rÚ send_operaterrrrÚ<lambda>;óz#L2CodeOperate.run.<locals>.<lambda>)ÚtargetT)Ú_L2CodeOperate__lockÚacquireÚ    threadingÚThreadÚ    setDaemonÚstartÚrelease)rÚt1rrrÚrun7s 
 
 zL2CodeOperate.runc
CsLt ¡}x<yø| d¡}td|| d¡ƒ|dk    rút |¡}|d|d}}|dkrªt |¡rfw t     
|¡r¦t      |¡s¦t      |¡\}}|dk    r¦|dk    r¦t  ||d¡q|dkrt |¡rÀw t     
|¡søt      |¡søt     ¡søt     ¡\}}|dk    rø|dk    røt  |||¡næ|dkrŠ|d    }|d
}t ¡ ||¡}|dkrHw t     ||¡}|dksh|dkrjw t d |||¡t  |||¡nn|d krÐt ¡rÆ|d    }|d }t ||¡}    td|    ƒntdƒn(|dkr|d    }|d
}t  ||d¡n
t d¡Wq tk
rB}
zt |
¡tdt |
ƒƒWdd}
~
XYq Xq WdS)NÚcode_operate_queueu读取操作队列ÚtyperrÚréÚclientÚposu修复代码一致:{}-{}-{}éruL2數據修復結果:u éžäº¤æ˜“时间,放弃修复L2éu发送操作异常:)!rrÚlpopÚprintÚllenrrÚl2_data_managerÚis_in_l2_fixed_codesrÚ    is_listenÚ
is_operateÚget_listen_code_posrÚ trade_managerÚis_in_forbidden_trade_codesÚis_listen_fullÚget_can_listen_posrÚget_operate_code_stateÚget_listen_code_by_posrrÚtoolÚ is_trade_timerrÚtimeÚsleepr"ÚloggingÚ    exceptionr$) Úredisrr:rr&r>ÚstateÚcode_r=r)r+rrrr,Bsb
 
 
 
 
 
 
 
 
 
 
 
 
zL2CodeOperate.send_operatec
Cs6|j ¡}td||ƒ| dt ||||dœ¡¡dS)NÚ add_operater9)r:rr=r>)rrrBÚrpushrÚdumps)Úselfr:rr=r>rUrrrrXs
 zL2CodeOperate.add_operatec
CsZt ||¡}|dks|dkr dSt d|||¡|j ¡}| dt d|||dœ¡¡dS)Nr;u8客户端位置代码修复:client-{},pos-{},code-{}r9r<)r:r=r>r)    rrNrrrrrYrrZ)r[r=r>rrWrUrrrÚrepaire_operate†s  
zL2CodeOperate.repaire_operatec
CsŠt d|¡t |¡\}}|dk    r†|dk    r†t |¡}t |¡}dt|ƒ|t|ƒt|ƒdœdœ}|j     ¡}| 
dt   d|||dœ¡¡dS)Nu修复单票的L2æ•°æ®ï¼šÚ repairL2Data)rrÚ    min_priceÚ    max_price)rrr9r?)r:rr=r) rrrrHÚget_limit_up_priceÚget_limit_down_pricerÚfloatrrrYrrZ)r[rr&r>r_r^rrUrrrÚrepaire_l2_data‘s
 
 
zL2CodeOperate.repaire_l2_datacCst |¡r| d|¡dS)Nr)rrFrX)r[rrrrÚremove_l2_listenŸs
zL2CodeOperate.remove_l2_listencCs"| ¡ d ||¡t ¡|¡dS)Nzcode-operate_state-{}-{})rÚsetexrrOÚ
get_expire)rr&ÚchannelrVrrrr!¥sz$L2CodeOperate.set_operate_code_statecCs*| ¡ d ||¡¡}|dk    r&t|ƒS|S)Nzcode-operate_state-{}-{})rÚgetrr)r[r&rgÚvaluerrrrM©sz$L2CodeOperate.get_operate_code_state)NN)Ú__name__Ú
__module__Ú __qualname__Ú_L2CodeOperate__instancer2ÚRLockr0Ú redis_managerÚ RedisManagerrÚ classmethodrrÚ staticmethodrr8r,rXr\rcrdr!rMrrrrrs    ?
  rcCsrddi}t ||¡}t |¡}|ddkrft |d¡}|d}i}x|D]}|d||d<qJW|Stdƒ‚dS)NrÚ
getL2Codesrrrru!获取客户端监听代码出错)rrrrr")r&rr)ÚcodesÚ result_listÚdrrrÚget_listen_codes_from_client±s 
 
rwc Csèt ¡}xÚ|D]Ò}y”t|ƒ}x†tddƒD]x}t ||¡}|dk    rlt|ƒdkrl| |¡|krltƒ     |||¡q(|dksŽt|ƒdkr(| |¡dk    r(tƒ 
dd||¡q(WWqt k
rÞ}zt   d |t|ƒ¡¡Wdd}~XYqXqWdS)Nrér@r;zclient:{} msg:{})Ú data_processÚgetValidL2ClientsrwÚrangerrNÚlenrhrr\rXr"rr#rr$)Ú
client_idsr&Ú index_codesrrr+rrrÚcorrect_client_codesÁs
 ""rÚ__main__)rrSÚosÚqueuer2ryrrDrrOrIrQroÚlogrÚobjectrrwrrjrrrrÚ<module>s&