hwj35
2025-06-23 aa0f971ae9a59f0fd98d57b6c1d1663a270be92c
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
Å_ªgc@s,ddlmZddlZddlmZddlZddlmZddlmZddl    m
Z
m Z m Z m Z mZmZmZddlmZddlmZmZddlZddlZed    ƒ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„Zd„Zd„ZRS(cCs
tj|d|ƒg|_x9td|ƒD](}d}|jj|tjƒgƒq,W||_d|_d|_    d|_
d|_ t |_ tj|ƒ|_tj|ƒ|_ddg|_tjƒ|_t |_d|_t |_d|_d|_d|_dS(Ntnameit((Rt__init__tpriorityQueueListtxrangetappendtQueuet ctrlDBManagertNonet _CtrlDB__hostt _CtrlDB__portt_CtrlDB__dbNamet_CtrlDB__reconnectCnttFalset_CtrlDB__elegantExitRtFuncGradeManagertfuncGradeManagerR    t SpeedGradeMgrtspeedGradeManagertStatet    threadingtLockt
StateMutextQueueSizeExceedThresholdtBlockCntt    Connectedt
connectiontdbtlastProcessTime(tselft
threadNametpriorityQueueSizeRtitqueueProcessRequestType((sO.\TCode\TeamServer\Server4\Servers\PyMongoDataServer\src\LogicProcess\CtrlDB.pyRs,                                                  cCsHtjr5|jjƒddg|_|jjƒnddg|_dS(Ni(tDBConfigtMultiThreadingR%tacquireR"trelease(R,tRequest((sO.\TCode\TeamServer\Server4\Servers\PyMongoDataServer\src\LogicProcess\CtrlDB.pyt
clearState8s
     cCsTtjr;|jjƒ|tjƒg|_|jjƒn|tjƒg|_dS(N(R1R2R%R3ttimeitt default_timerR"R4(R,tcurrentProcessingRequest((sO.\TCode\TeamServer\Server4\Servers\PyMongoDataServer\src\LogicProcess\CtrlDB.pyt updateStateAs
     cCsˆtjr@|jjƒ|jd}|jd}|jjƒn|jd}|jd}|sddStjƒ}d|||||fS(Niis-s)Type = %s, process time = %s secs, %s, %s(R1R2R%R3R"R4R7R8(R,tstatetstartProcessTickt currentTime((sO.\TCode\TeamServer\Server4\Servers\PyMongoDataServer\src\LogicProcess\CtrlDB.pytgetStateIs          cCs|jS(N(R(R,((sO.\TCode\TeamServer\Server4\Servers\PyMongoDataServer\src\LogicProcess\CtrlDB.pytGetFuncGradeManagerXscCs|jS(N(R!(R,((sO.\TCode\TeamServer\Server4\Servers\PyMongoDataServer\src\LogicProcess\CtrlDB.pytGetSpeedGradeMgr[scCs|jj|ƒS(N(Rt GetFuncGrade(R,tfuncName((sO.\TCode\TeamServer\Server4\Servers\PyMongoDataServer\src\LogicProcess\CtrlDB.pyRA^scCs|jj|ƒS(N(R!t GetSpeedGrade(R,R((sO.\TCode\TeamServer\Server4\Servers\PyMongoDataServer\src\LogicProcess\CtrlDB.pyRCascCs t|jƒS(N(tlenR(R,((sO.\TCode\TeamServer\Server4\Servers\PyMongoDataServer\src\LogicProcess\CtrlDB.pytgetPrioorityQueueCntdscCs|j|djƒS(Ni(Rtqsize(R,tindex((sO.\TCode\TeamServer\Server4\Servers\PyMongoDataServer\src\LogicProcess\CtrlDB.pytgetPriorityQueueSizegscCsEtjƒjƒ}tj|jƒ_|j|ƒ|jj    |ƒdS(N(
Rt getPackPooltallocRtatInnert getPackHeadttypet    setBufferRt dbRequestPush(R,tbuftsendPack((sO.\TCode\TeamServer\Server4\Servers\PyMongoDataServer\src\LogicProcess\CtrlDB.pyt sendDBRequestjs 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(RtdebugRRIRJt setSessionIDRLt    sessionIDt    poolIndexRMt
dstSvrTypet
srcSvrTypeRNRt dbAnswerPush(    R,tsendViaSessiondIDRURVRMRWRXRPRQ((sO.\TCode\TeamServer\Server4\Servers\PyMongoDataServer\src\LogicProcess\CtrlDB.pytpackSendps  cCs5tjƒj|jƒƒ}|r1|j|ƒndS(N(R t getServerMgrtFindServerByClientSessionIDt getSessionIDtpushSend(R,tpacktoServer((sO.\TCode\TeamServer\Server4\Servers\PyMongoDataServer\src\LogicProcess\CtrlDB.pyR_~scCsHxAtdt|jƒƒD]'}|j|d}||krtSqWtS(Ni(RRDRtTrueR(R,t requestTypeR/trequestTypeList((sO.\TCode\TeamServer\Server4\Servers\PyMongoDataServer\src\LogicProcess\CtrlDB.pyt
canProcess„s
 cCs||_||_dS(N(RR(R,thosttport((sO.\TCode\TeamServer\Server4\Servers\PyMongoDataServer\src\LogicProcess\CtrlDB.pyt    setServerŒs    cCs||_||_||_dS(N(Rt_CtrlDB__dbUsert_CtrlDB__dbPwd(R,tdbNametusertpwd((sO.\TCode\TeamServer\Server4\Servers\PyMongoDataServer\src\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    getBufferRRDRRt    formatMsgt ERROR_NO_42RRRSRCtRefreshtputRb(R,R`tposRct
priorityLVR/Rdtmsg((sO.\TCode\TeamServer\Server4\Servers\PyMongoDataServer\src\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( R1t StartProfileRRDRRFtProfileQueueThresholdMaxR&R'RbRtwarningtgetNametProfileQueueThresholdMinRt
get_nowaitRtEmptyRRoRpRCRsR tMMORPGPacket_StacktassignRSt outputStringRRItfreeR(R,tlowBalanceQueueCntR/R`RuRctret((sO.\TCode\TeamServer\Server4\Servers\PyMongoDataServer\src\LogicProcess\CtrlDB.pyt __requestPop±s8             7       c
Cs€xytr{y|jsÄtjd|j|jfƒtj|j|jdtƒ|_    |j    |j
|_ t|_tjd|j|jfƒt j |j|jd|j    ƒs±dS|j|j ƒntjƒ}||jdkrÿ||_|j|j ƒn|jƒ}tjr@|dkre|jr-Pntdƒwqen%|dkrPPntjƒjd7_d}d}|jƒdkrÏd}tj|j ƒ|ƒ\}}|j!|ƒtj"rÏt#j$ƒ}qÏn|j%|j |ƒ}|rItj"r9|r9t#j$ƒ|}|tj&dkr9tj'd    ||fƒq9n|j(|ƒntj)d
t*|j ƒdƒƒ|rvwnt+j,d t+j-d |j.ƒƒ}tj+|ƒWqtj/j0k
rB|j1d7_1tjd |j|j|j1fƒ|j1tj2kr9t+j,dt+j3d|j|jfƒ}tj4|ƒdSt}    qt+j,d t+j5dt6j7ƒƒ}tj+|ƒqXqWdS(Ns!!!!!!!!!!!connect %s:%stauto_start_requests!!!!!!!!!!!connect %s:%s ok!R)igš™™™™™¹?ig@@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(8RbR(RtinfoRRtpymongot
ConnectionRR)RR*Rt LoginMongoDBRiRjt onConnectedOKttimeR+tonSecondProcesst_CtrlDB__requestPopR1R2RRRR
tGetStattDBProcessCountt    getLengthRRoRpR:RyR7R8trequestLogicProcesstProfileThresholdR{R6RStordRRqt ERROR_NO_43R‚terrorst AutoReconnectRtmaxReconnectCntt ERROR_NO_44Rˆt ERROR_NO_45t    tracebackt
format_exc(
R,tcurTimeR`RctprocessStartTickRutresultt processTimeRwt
bConnected((sO.\TCode\TeamServer\Server4\Servers\PyMongoDataServer\src\LogicProcess\CtrlDB.pyt__requestProcessÓsp        !    !               
          !"#(     "cCs1|jƒtjr-tjd|jƒƒndS(NsThread %s exit!(t_CtrlDB__requestProcessR1R2RR‰R|(R,((sO.\TCode\TeamServer\Server4\Servers\PyMongoDataServer\src\LogicProcess\CtrlDB.pytruns
    cCstjdƒdS(s×ÓÀàʵÏÖs
unhandled!N(RR{(R,R*R`((sO.\TCode\TeamServer\Server4\Servers\PyMongoDataServer\src\LogicProcess\CtrlDB.pyR”"scCsdS(s×ÓÀàʵÏÖN((R,R*((sO.\TCode\TeamServer\Server4\Servers\PyMongoDataServer\src\LogicProcess\CtrlDB.pyR&scCsdS(s×ÓÀàʵÏÖ - Ã¿Ãë´¦ÀíN((R,R*((sO.\TCode\TeamServer\Server4\Servers\PyMongoDataServer\src\LogicProcess\CtrlDB.pyR*scCs:t|_tj|ƒtjd|jƒ|jfƒdS(NsThread %s(%s) start!(RRRtstartRR‰R|tident(R,((sO.\TCode\TeamServer\Server4\Servers\PyMongoDataServer\src\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|RbRtisAliveR(R,((sO.\TCode\TeamServer\Server4\Servers\PyMongoDataServer\src\LogicProcess\CtrlDB.pytstop3s
    cCs„tjƒ}||_d|_|jƒ|}|j|jƒ|jƒj|jƒj    |jƒj
|jƒj |jƒj |ƒdS(Ni( R ttagDBToGameServerHeadtTypetSuccesst    GetBufferR[R^RLRURVRMRXRW(R,trecvPackRMtdataRQtsendBuf((sO.\TCode\TeamServer\Server4\Servers\PyMongoDataServer\src\LogicProcess\CtrlDB.pytsendGameServerString;s         (t__name__t
__module__RR6R:R>R?R@RARCRERHRRR[R_ReRhRnRxRR¥R¦R”RRR§RªR²(((sO.\TCode\TeamServer\Server4\Servers\PyMongoDataServer\src\LogicProcess\CtrlDB.pyRs4                                                                            "    I                        (R#RRRŽRRŠtCommonRRtDBCommonRRRRRR    R
tNetR tProtocolR R Rt
__import__R1R7t ImportErrortdummy_threadingR(((sO.\TCode\TeamServer\Server4\Servers\PyMongoDataServer\src\LogicProcess\CtrlDB.pyt<module>s"  4