xdh
2019-02-21 92eee67f85cbd29feb1287ae5a15ad0c787e95cb
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
(«Qc@s ddlmZddlZddlmZddlZddlmZddlmZddl    m
Z
m Z m Z m Z mZmZmZddlmZddlmZmZddlZed    ƒZddlZyddlZWnek
rddlZnXd
efd „ƒYZdS( iÿÿÿÿ(tThreadN(tsleep(tmylog(tCommFunc(tSingletonObjectt CommonDefinet    FuncGradetGlobalFunctionsterrort
SpeedGradetStat(t MongoDBServer(tSendPackProtocolt
MMORPGPacksConfig.DBConfigtCtrlDBcBsàeZd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Z    d„Z
d    „Z d
„Z d „Z d „Zd „Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„ZRS(cCstj|d|ƒg|_x9td|ƒD](}d}|jj|tjƒgƒq,W||_d|_d|_    d|_
d|_ t |_ tj|ƒ|_tj|ƒ|_ddg|_tjƒ|_t |_d|_t |_d|_d|_dS(Ntnameit((Rt__init__tpriorityQueueListtxrangetappendtQueuet ctrlDBManagertNonet _CtrlDB__hostt _CtrlDB__portt_CtrlDB__dbNamet_CtrlDB__reconnectCnttFalset_CtrlDB__elegantExitRtFuncGradeManagertfuncGradeManagerR    t SpeedGradeMgrtspeedGradeManagertStatet    threadingtLockt
StateMutextQueueSizeExceedThresholdtBlockCntt    Connectedt
connectiontdb(tselft
threadNametpriorityQueueSizeRtitqueueProcessRequestType((s4.\server\db\PyMongoDataServer\LogicProcess\CtrlDB.pyRs*                                              cCsHtjr5|jjƒddg|_|jjƒnddg|_dS(Ni(tDBConfigtMultiThreadingR%tacquireR"trelease(R+tRequest((s4.\server\db\PyMongoDataServer\LogicProcess\CtrlDB.pyt
clearState6s
     cCsTtjr;|jjƒ|tjƒg|_|jjƒn|tjƒg|_dS(N(R0R1R%R2ttimeitt default_timerR"R3(R+tcurrentProcessingRequest((s4.\server\db\PyMongoDataServer\LogicProcess\CtrlDB.pyt updateState?s
     cCsˆtjr@|jjƒ|jd}|jd}|jjƒn|jd}|jd}|sddStjƒ}d|||||fS(Niis-s)Type = %s, process time = %s secs, %s, %s(R0R1R%R2R"R3R6R7(R+tstatetstartProcessTickt currentTime((s4.\server\db\PyMongoDataServer\LogicProcess\CtrlDB.pytgetStateGs          cCs|jS(N(R(R+((s4.\server\db\PyMongoDataServer\LogicProcess\CtrlDB.pytGetFuncGradeManagerVscCs|jS(N(R!(R+((s4.\server\db\PyMongoDataServer\LogicProcess\CtrlDB.pytGetSpeedGradeMgrYscCs|jj|ƒS(N(Rt GetFuncGrade(R+tfuncName((s4.\server\db\PyMongoDataServer\LogicProcess\CtrlDB.pyR@\scCs|jj|ƒS(N(R!t GetSpeedGrade(R+R((s4.\server\db\PyMongoDataServer\LogicProcess\CtrlDB.pyRB_scCs t|jƒS(N(tlenR(R+((s4.\server\db\PyMongoDataServer\LogicProcess\CtrlDB.pytgetPrioorityQueueCntbscCs|j|djƒS(Ni(Rtqsize(R+tindex((s4.\server\db\PyMongoDataServer\LogicProcess\CtrlDB.pytgetPriorityQueueSizeescCsEtjƒjƒ}tj|jƒ_|j|ƒ|jj    |ƒdS(N(
Rt getPackPooltallocRtatInnert getPackHeadttypet    setBufferRt dbRequestPush(R+tbuftsendPack((s4.\server\db\PyMongoDataServer\LogicProcess\CtrlDB.pyt sendDBRequesths c    Cs®tjd||||||fƒtjƒjƒ}|j|ƒ||jƒ_||jƒ_||jƒ_    ||jƒ_
||jƒ_ |j |ƒ|j j|ƒdS(NsksendViaSessiondID = %s, sessionID = %s, poolIndex = %s, type = %s, dstSvrType = %s,         srcSvrType = %s(RtdebugRRHRIt setSessionIDRKt    sessionIDt    poolIndexRLt
dstSvrTypet
srcSvrTypeRMRt dbAnswerPush(    R+tsendViaSessiondIDRTRURLRVRWRORP((s4.\server\db\PyMongoDataServer\LogicProcess\CtrlDB.pytpackSendns  cCs5tjƒj|jƒƒ}|r1|j|ƒndS(N(R t getServerMgrtFindServerByClientSessionIDt getSessionIDtpushSend(R+tpacktoServer((s4.\server\db\PyMongoDataServer\LogicProcess\CtrlDB.pyR^|scCsHxAtdt|jƒƒD]'}|j|d}||krtSqWtS(Ni(RRCRtTrueR(R+t requestTypeR.trequestTypeList((s4.\server\db\PyMongoDataServer\LogicProcess\CtrlDB.pyt
canProcess‚s
 cCs||_||_dS(N(RR(R+thosttport((s4.\server\db\PyMongoDataServer\LogicProcess\CtrlDB.pyt    setServerŠs    cCs||_||_||_dS(N(Rt_CtrlDB__dbUsert_CtrlDB__dbPwd(R+tdbNametusertpwd((s4.\server\db\PyMongoDataServer\LogicProcess\CtrlDB.pyt setDataBaseŽs        cCs d}tj|jƒ|ƒ\}}d}xGtdt|jƒƒD]-}|j|d}||krC|}PqCqCW|dks•|t|jƒkrÂtjdtjd|ƒ}t    j|ƒt
St    j d||fƒ|j d|ƒj ƒ|j|dj|ƒtS(NiiÿÿÿÿRspriorityLV = %s not found!spack type = %s add to queue %ssrequestPush_%si(RtReadBYTEt    getBufferRRCRRt    formatMsgt ERROR_NO_42RRRRRBtRefreshtputRa(R+R_tposRbt
priorityLVR.Rctmsg((s4.\server\db\PyMongoDataServer\LogicProcess\CtrlDB.pyt requestPushs  ! cCstjrd}xÅtdt|jƒƒD]«}|j|djƒtjkr¦|jsÓ|jd7_t    |_t
j d|j ƒ||j|djƒfƒqÓq(|j|djƒtj kr(|d7}q(q(W|jr|t|jƒkrt|_t
j d|j ƒƒqnxãtdt|jƒƒD]É}y|j|djƒ}Wntjk
rnq4nX|r4d}tj|jƒ|ƒ\}}|jd|ƒjƒtjƒ}|j|ƒt
jd||jƒfƒtjƒj|ƒ|Sq4WdS(Niis!!!*** %s queue %s size = %ss$!!!*** %s queue resume low balanced!s requestPop_%ss)pop pack from queue(priorityLV = %s) = %s( R0t StartProfileRRCRREtProfileQueueThresholdMaxR&R'RaRtwarningtgetNametProfileQueueThresholdMinRt
get_nowaitRtEmptyRRnRoRBRrR tMMORPGPacket_StacktassignRRt outputStringRRHtfreeR(R+tlowBalanceQueueCntR.R_RtRbtret((s4.\server\db\PyMongoDataServer\LogicProcess\CtrlDB.pyt __requestPop¯s8             7       c    Cs5x.tr0yR|js´tjd|j|jfƒtj|j|jdtƒ|_    |j    |j
|_ t|_tjd|j|jfƒt j |j|jd|j    ƒs´dSn|jƒ}tjrõ|dkr|jrâPntdƒwqn%|dkrPntjƒjd7_d}d}|jƒdkr„d}tj|jƒ|ƒ\}}|j|ƒtjr„tj ƒ}q„n|j!|j |ƒ}|rþtjrî|rîtj ƒ|}|tj"dkrîtj#d    ||fƒqîn|j$|ƒntj%d
t&|jƒdƒƒ|r+wnt'j(d t'j)d |j*ƒƒ}tj'|ƒWqtj+j,k
r÷|j-d7_-tjd |j|j|j-fƒ|j-tj.krît'j(dt'j/d|j|jfƒ}tj0|ƒdSt}qt'j(d t'j1dt2j3ƒƒ}tj'|ƒqXqWdS(Ns!!!!!!!!!!!connect %s:%stauto_start_requests!!!!!!!!!!!connect %s:%s ok!R)gš™™™™™¹?iig@@s.!!!---request type = %s process time = %s secssend process request type = %dRsfailed to process pack = %ss"try reconnecting %s:%s cnt = %s...tfatalsreconnect %s:%s failed!s%s(4RaR(RtinfoRRtpymongot
ConnectionRR)RR*Rt LoginMongoDBRhRit_CtrlDB__requestPopR0R1RRRR
tGetStattDBProcessCountt    getLengthRRnRoR9RxR6R7trequestLogicProcesstProfileThresholdRzR5RRtordRRpt ERROR_NO_43Rterrorst AutoReconnectRtmaxReconnectCntt ERROR_NO_44R‡t ERROR_NO_45t    tracebackt
format_exc(    R+R_RbtprocessStartTickRttresultt processTimeRvt
bConnected((s4.\server\db\PyMongoDataServer\LogicProcess\CtrlDB.pyt__requestProcessÑsf        !    !          
          !"#(     "cCs1|jƒtjr-tjd|jƒƒndS(NsThread %s exit!(t_CtrlDB__requestProcessR0R1RRˆR{(R+((s4.\server\db\PyMongoDataServer\LogicProcess\CtrlDB.pytruns
    cCstjdƒdS(s×ÓÀàʵÏÖs
unhandled!N(RRz(R+R*R_((s4.\server\db\PyMongoDataServer\LogicProcess\CtrlDB.pyRscCs:t|_tj|ƒtjd|jƒ|jfƒdS(NsThread %s(%s) start!(RRRtstartRRˆR{tident(R+((s4.\server\db\PyMongoDataServer\LogicProcess\CtrlDB.pyR¢s     cCsXtjd|jƒƒt|_x|jƒr<tdƒq#Wtjd|jƒƒdS(NsStoping thread %s...gš™™™™™¹?sThread %s stop OK!(RRˆR{RaRtisAliveR(R+((s4.\server\db\PyMongoDataServer\LogicProcess\CtrlDB.pytstop"s
    cCs„tjƒ}||_d|_|jƒ|}|j|jƒ|jƒj|jƒj    |jƒj
|jƒj |jƒj |ƒdS(Ni( R ttagDBToGameServerHeadtTypetSuccesst    GetBufferRZR]RKRTRURLRWRV(R+trecvPackRLtdataRPtsendBuf((s4.\server\db\PyMongoDataServer\LogicProcess\CtrlDB.pytsendGameServerString*s         (t__name__t
__module__RR5R9R=R>R?R@RBRDRGRQRZR^RdRgRmRwRŒR R¡RR¢R¥R­(((s4.\server\db\PyMongoDataServer\LogicProcess\CtrlDB.pyRs0                                                                            "    B                (R#RRttimeRR‰tCommonRRtDBCommonRRRRRR    R
tNetR tProtocolR R R™t
__import__R0R6t ImportErrortdummy_threadingR(((s4.\server\db\PyMongoDataServer\LogicProcess\CtrlDB.pyt<module>s   4