unknown
2022-08-18 bc6204f30deb7518b6f4738e3c842598cd040545
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
B
ãíýbÛã@sxddlZddlZddlZddlZddlZddlZddlZddlZddlZddl    Z    ddl
Z
ddl m Z Gdd„de ƒZdS)éN)Úlogger_code_operatec@sŒeZdZdZe ¡Ze ¡Z    e
dd„ƒZ e
dd„ƒZ e dd„ƒZe
dd    „ƒZe d
d „ƒZd d „Zdd„Zdd„Zdd„Zdd„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ÚkwargsZ    insObjectrrrÚ get_instances
 
 zL2CodeOperate.get_instancec
Csºdt|ƒ|dœdœ}t d |||¡¡t |¡zvy>t ||¡}t d ||||¡¡| d¡rpt     |||¡Wn2t
k
r¤}zt  dt |ƒ¡Wdd}~XYnXWdt  |¡XdS)NÚ    setGPCode)ÚindexÚcode)ÚactionÚdatau,setGPCode:clientid-{}  position-{} code-{}u:setGPCode结束({}):clientid-{}  position-{} code-{}ÚOKusetGPCode出错:{})ÚintrÚinfoÚformatÚgpcode_managerÚ set_operateÚserverÚsend_msgÚ __contains__Úset_listen_code_by_posÚ    ExceptionÚerrorÚstrÚ
rm_operate)Ú    client_idÚpositionÚgpcoderÚresultÚerrrr"s
 
&zL2CodeOperate.setGPCodecCsB|j ¡z&tjdd„d}| d¡| ¡Wd|j ¡XdS)NcSst ¡S)N)rÚ send_operaterrrrÚ<lambda>7óz#L2CodeOperate.run.<locals>.<lambda>)ÚtargetT)Ú_L2CodeOperate__lockÚacquireÚ    threadingÚThreadÚ    setDaemonÚstartÚrelease)rÚt1rrrÚrun3s 
 
 zL2CodeOperate.runc    Csât ¡}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  |||¡n,|d krÂ|d }|d    }t |t |¡¡n
t d¡Wq tdƒYq Xq WdS)NÚcode_operate_queueu读取操作队列ÚtyperrÚééÚclientÚposu修复代码一致:{}-{}-{}éru发送操作异常)rrÚlpopÚprintÚllenÚjsonÚloadsÚl2_data_managerZis_in_l2_fixed_codesrÚ    is_listenÚ
is_operateÚget_listen_code_posrÚ trade_managerZis_in_forbidden_trade_codesÚis_listen_fullÚget_can_listen_posrÚget_operate_code_stateÚget_listen_code_by_posrrrrÚdumpsÚtimeÚsleep)    Úredisrr6rr#r;ÚstateÚcode_r:rrrr(>sR
 
 
 
 
 
 
 
 
zL2CodeOperate.send_operatecCs2|j ¡}td||ƒ| dt ||dœ¡¡dS)NÚ add_operater5)r6r)rrr>Úrpushr@rK)Úselfr6rrNrrrrQrs
 zL2CodeOperate.add_operatec
Cs*|j ¡}| dt d|||dœ¡¡dS)Nr5r9)r6r:r;r)rrrRr@rK)rSr:r;rrNrrrÚrepaire_operatews
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数据:Z repairL2Data)rrÚ    min_priceÚ    max_price)rrr5r<)r6r:r) rrrrEÚget_limit_up_priceÚget_limit_down_pricerÚfloatrrrRr@rK)rSrr#r;rVrUrrNrrrÚrepaire_l2_data}s
 
 
zL2CodeOperate.repaire_l2_datacCst |¡r| d|¡dS)Nr)rrCrQ)rSrrrrÚremove_l2_listen‹s
zL2CodeOperate.remove_l2_listencCs"| ¡ d ||¡t ¡|¡dS)Nzcode-operate_state-{}-{})rÚsetexrÚtoolÚ
get_expire)rSr#ÚchannelrOrrrÚset_operate_code_state‘sz$L2CodeOperate.set_operate_code_statecCs*| ¡ d ||¡¡}|dk    r&t|ƒS|S)Nzcode-operate_state-{}-{})rÚgetrr)rSr#r_ÚvaluerrrrI”sz$L2CodeOperate.get_operate_code_state)Ú__name__Ú
__module__Ú __qualname__Z_L2CodeOperate__instancer.ÚRLockr,Ú redis_managerÚ RedisManagerrÚ classmethodrrÚ staticmethodrr4r(rQrTrZr[r`rIrrrrrs    4r)r@ÚosÚqueuer.rrBrr]rFrLrgÚlogrÚobjectrrrrrÚ<module>s