From 81813738d1b613ff42ec8be7a70fc6bfb1e5755a Mon Sep 17 00:00:00 2001 From: HuangHai <10402852@qq.com> Date: Fri, 28 Mar 2025 10:18:32 +0800 Subject: [PATCH] 'commit' --- AI/WxMini/Start.py | 28 ++++++++++++++++-- .../__pycache__/ImageUtil.cpython-310.pyc | Bin 0 -> 2507 bytes .../__pycache__/MySQLUtil.cpython-310.pyc | Bin 7330 -> 9339 bytes .../Utils/__pycache__/OssUtil.cpython-310.pyc | Bin 3717 -> 2889 bytes .../Utils/__pycache__/TtsUtil.cpython-310.pyc | Bin 2289 -> 2293 bytes AI/WxMini/__pycache__/Start.cpython-310.pyc | Bin 11961 -> 15697 bytes 6 files changed, 26 insertions(+), 2 deletions(-) create mode 100644 AI/WxMini/Utils/__pycache__/ImageUtil.cpython-310.pyc diff --git a/AI/WxMini/Start.py b/AI/WxMini/Start.py index 7884c424..e96991dc 100644 --- a/AI/WxMini/Start.py +++ b/AI/WxMini/Start.py @@ -30,7 +30,8 @@ from WxMini.Utils.OssUtil import upload_mp3_to_oss_from_memory, hmacsha256 from WxMini.Utils.TtsUtil import TTS # 配置日志 -logging.basicConfig(level=logging.INFO, format="%(asctime)s - %(levelname)s - %(message)s") +logging.basicConfig(level=logging.INFO, + format="%(asctime)s - %(levelname)s - %(message)s") logger = logging.getLogger(__name__) # 密码加密上下文 @@ -620,4 +621,27 @@ async def process_image(image_url: str, current_user: dict = Depends(get_current if __name__ == "__main__": import uvicorn - uvicorn.run("Start:app", host="0.0.0.0", port=5600, workers=1) + # Uvicorn日志配置 + uvicorn_log_config = { + "version": 1, + "formatters": { + "default": { + "()": "uvicorn.logging.DefaultFormatter", + "fmt": "%(asctime)s %(levelprefix)s %(message)s", + "datefmt": "%Y-%m-%d %H:%M:%S", + } + }, + "handlers": { + "default": { + "formatter": "default", + "class": "logging.StreamHandler", + "stream": "ext://sys.stderr", + } + }, + "loggers": { + "uvicorn": {"handlers": ["default"], "level": "INFO"}, + }, + } + + # 强制覆盖Uvicorn的默认配置 + uvicorn.run("Start:app", host="0.0.0.0", port=5600, workers=1, log_config=uvicorn_log_config) diff --git a/AI/WxMini/Utils/__pycache__/ImageUtil.cpython-310.pyc b/AI/WxMini/Utils/__pycache__/ImageUtil.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..06222968366a724102688240c25a3ffe1a4548d1 GIT binary patch literal 2507 zcmb7_?{5@E7{_OJ_wM%E>-864h$xE^^dfB)B5Gq0A{v?i3N1F)VsqZC?Uud0>+Bx1 z&DFFPp%t*k0<};Oj1nvM2PPt=1zz}H>?;$xd)HSrCcdyS;4`yFIf@N&H~Z}D>@&~I zKKuR5lPD@GKya)S+~(iI2;E^1`G)`x+u$-^1w#Q}*xMQU)siP@% zex`3psQHVWV7>!D{WOXD}>Vq$8D2QuDQ&MYJbragr_FNlW)OKrO?LIY1l&G#NR*R~z zE=4nVn+L8O6=)EmP$rO3!Io%3SM5M7VOXkRy*(=0zIcMDx-G|5(}WzDw%@d<8jbIv z7>0C~eE7lkiiT)K=Zh7uHJS%rSf7ePcXr~a(|5(`o6MX&;w94=_|YBd&mOd4A@EGcb|uy~#2^bkRLBFgw-HhKvnme!2{Avy;7Hf4X z60{{IF}pC9h$nT`(h>%&E(VLU*eA3kv=}TmkXtw{hIQEjRpE=GR;jYPs-zO=Lnbw)OGlIl^HKkWyWianM{ zQ3}(V{GJ`?Kv`EH9UvtKMY=N`cn@Ke_N4=_pe`ThuJjVn*0!Zh*@8ODEjf+TLRvfr zJ|s+vNg15wy+My#jOt<5S|lMW*wKzrmyA(o*eW0^((*ZUUSQnTqxZq5Oa4S=o?h!P zK8zwOQ+^O0=Ow2L&hhN^F%XW2F9^r|rN@~W$le-sj@@7?o4V#q9?eV-x)(;W{_`I)n$g>(ft(Ur`sV&(}jwhwj+E9#LZSy~)eGj&x>QWo0|zSSO6lMGY(Bs`A> z=^EB8u}s=Q*v`CMd7ttWAMtTY*EvPDFV>PW4sznDja3e%XVx;$FjZrTW<%>#xjVzm z+zJL*3og%^R9=G1;FPf+t^zD|3kyPU0}kUgSnd|?(ajLz{}IUe8xe?~1k$30iOee( zt6!KDkV0O$LQuIRQ1k-=p=Xi6Ts0%1MFMj@iv$)gLtx3W1Qr2qE zwuHbCClEXdZ*c<4Q!hbUxBwp|(A({o5XgNyL-(s&QcszlYT0I%V&cr+9)=n)JKa4y z)#s^|)izs%iW|vQDAtj$VY-fWFu~Gin0c0&^~`Kw<~e3IGQ;GYCza9%QpuIMI&d&I zfdREhY)6)H2+MZ`DYPKTk5S0WFf0HvS8ZHVKUY literal 0 HcmV?d00001 diff --git a/AI/WxMini/Utils/__pycache__/MySQLUtil.cpython-310.pyc b/AI/WxMini/Utils/__pycache__/MySQLUtil.cpython-310.pyc index 11f241b7773a3f5e954946ced14a0ab4c50c70ce..cd6426173b7544618f609263a1dfcb2792d7d23a 100644 GIT binary patch delta 3805 zcma)9Yj6|S72bPywc1_DZ&^sP!NOo{*~WmA5(0(+KTZWVG^lBJIyp@T9|1%lk_popFVyuZKuulG1I07@}r&5Oxh_7PS3fL zWgDC+EAQF+*n9TgbHDGq$KQPP&hE}^MTI87b@1nZPY$*V!h2X*e0iX<6K+!?=Q^KW ztGZP|U#oldiWxHM(<}9=8DX?u7xe0JSK2@7CxYH`?#lj-#(1N?Iv&zj!gCee!MGF` zgF?J9K@*zZtgo4oMpx-%Sct5ezOAZcksJEVW+5Xa4@IZYMvB?K|vRG z3q*h#EeH>n>KE4JG+WDyIM=O*Hv*-5KhE;gsq(PW%=vM-2{=5UMIi8uW18#>e$ zi9}qEI~qGNnKI&zG?B_A+1p}>c-Zg7?d{rvXUDV1wNrhc?>gzBMn6P=o~oslq?Sm8 zg4O1#rS>~rbH+OMl(drkkVj`A2kTxE9kL`kO*v{)j81`+V?pxLLNqN`Ue;-Wuxqr5 z?7--d5f*d}ZFU@{CN=G)%OG&wx|#hheIxD=Q+ z<=ZahMN29WzVXm<;dstvyYenwv`K>StuDR?3z{FLOFCYU1i*+3UN%FAd)^Hq&^QXXQwoR|x30_p3j2lA1hEJ15qEA~z35`MWFOp3 zWQNtaJL)bh!5IadX;+8b=Lva-%_@&QFxJ}DWL+i1Y#3uY0wyWg!m)MilG@pB6WtvY zz$)CTK_M^bT7l@Ei`qGQ0>9~XXi7I4*-bS(-2|hJFq+k9n$fHQ<9K35JZb^BQ|b8a znwBH$Thi-W^l;1Wtu1@EwhTu!qZ8k4M6(`E7n)CUXKa98*kZ-Bj0C!jP=|JHbXZDj zUh@?6ndnFsXodWdOqTw> zShTXObqW`Uu>nH5=T$`lRjHIJiSKr4NxRtP%9WH7_B^f2KFcS$SbD|sB0!2S4CEwB zv;lmlOG1l`H1+^*C6HqZ+@v~i3Z4=^ZC8RWl4P;OQ!eV3JFl=^RVzeyUS&tCI*87t zXo_8}djE)a?}~T9GPoY$4o-|mV{tA_Mk}_rfpOd?qecb}l1srC)Dw}a69c0)Mr&1FUcQIIl;G-C!0BiPb z?=3*xM5$PSjt|tFA4_-qbJd!c`2JG@(39|*Qw(%sJeo9ipsy{U?kjh;Ef=ZJbDdvI z6t4PQ<&h|dbATeya93Vr|Mab39rfx+&aI2O1RCsmhDYQ}AnshsLB#I~=KNs*u5=j= z1J!mLht3KKP)+cl*lvtyh9m`cyuO?LtX?H2F{b@5E>UjGR+PybuoNu}*UhiKIs4Mf zH=qCV?4{RlUjF{P5Dv;vp9Ece3;T9{Kt! z-2%b1uB&G}8;g#cJD`vHM+4p0_JsM9K`a{sr&_+ObR9>0PvPe zHhOT-6KJ@)mGu1(HWXonC9ZQkL4o6OT5u#Id(w2&SavdFjhQFLx$HXmP^Zl2kKSR^DapGBFF7o8MJi4XF0kq|i*2my%+4AyXP zNq6T57W1QdN_cF=cp)j|ytdLW9Bar`SZ+(PRlDLeg#@S4uEYexc&7NwtGZGkSnd&Q zZ(g%23y?~m7_q&!CqWOfWPK-*+1KkoMZS$Zs(<@F9;uTbFwMV(9ja&ra=c9bi)>(# z6+db(qp35D{{TB>1996g#pC@F9Wt*;5m@75lRuy1HjuTQ^(i@V;ng; zF%i$`k*cC5bJQc!jNVVczF-`|ZqBq(Eb)BjD3*|fjtBuQGN6{-2(6922aP6b0;sxH z#CfQMb3fo*5+$O5$}6-M@^+c{{^XyNTYY~lA%6@8Lh6tIycG>D8A#6?IJW8NqJ6AXcvVeO`jk4qui0PQsgUZA{|7^#cBB9R delta 2525 zcmZWrU2GIp6u$S)@6Jx!Wp~?di>14ig>K7Fp_TuiDwP02p@LD6pENtOWu?0dcXorp z*%SlO@Zdwe!9*Ztm&8PQk)*~DA4PrBghV5m2T9}!dC`QZNU)wW+bylkX1+c5?7esH zIp;gy&f}feHY_hRG#CV~H$J{MHrYwYJsixv0x%ea+qpv~m!D8A(`vXtCM&HpF?n-D zp$AB6@zel4M$_t?RXW(X?JZn*9pD}6k_xGk0kVr&WGA`2t*p9gh0gKB%bKfIm_=Rc zGFNhCSIH<n$-9= zB=af=GfhMLlCEn=Wqmb8#O-NGkyK%LHRKu0ipw8lSjOR$QgRic*#O#bZ!B z%P*d6NiNG!zeM2mOQiVWz{rx@2o}_pTZyH_h%2{~vhGSXJ4(s{D5z|yP-@u?WTbh! zsP$dS#(-<^gRW80s#s^u(k~F#7$WCsIp_vqd*q4kQY+9#0F5?c1+Qx2ver+}iyyS! z$Vc;d!hk2{l&N2$^oqC^*danjCK80855Vob2rx!maI zq!4-#X4msxaU!_B;|MsN766qnL;YK&^^ZyAN8(m+)k4pJ@@MnM^P@T23!bup&9y;F z6Ay#EChx<2R|5d06K1Qr6vr{K-AwE@eXe*W^Z>W>#p5N%=CupwloDznF;*L;aIAGUy)sU!o=x@NUYWs;4RCp%zIp*S{unzOY}ts z=niqap_d++deX3lu8=tL}{ES#($M7Lnu1Fwe3|P)A;5U3j z7*z(c#^%VHRH^k0>_kaXt!S3w(klcyLmUn@N@_(HCqupTs4oYOxD~p8Ffb?PZ5SN} zjx{miYcNqdcF@kEPV7NjV(gS?A>OoSiGw1w;vVoA1GV2bl?}5u3v8 z!D+q&_d#ZfvG8ILqTidN+j7s;Zn!L23~B}SgMOqlq5$;+QIKXd4yy@?akhvD;r^iP z_pn-2imFIOHqneM#B1RJga z>dM6GNRK)O3w^VnzKhvzzB*4E@vmGj{U)j%>xCCde6Z+4`js$a3&luhi}+&Em$XN$ zN_-;v+WOep+oCD)jkwX?wH9N?%tvd@n#MSS$8Hbj;SN#&lmP_QMaJ%nPYA z&f!41Py$JGPLKP-=gAhV~-S*7Y{+5|_G0`th~G|6At1RBy$h-_O`|p5zoc w_em#Z^F@w3@i5A7lfF4uuu9|hR(vIKR*JzTiIA@7K~pzm{RKVT5?R{(AKGvp1poj5 diff --git a/AI/WxMini/Utils/__pycache__/OssUtil.cpython-310.pyc b/AI/WxMini/Utils/__pycache__/OssUtil.cpython-310.pyc index 1f3a2c2917958bce41c17ca175c4a3938ab6293e..47d3503c2b665f9276270de9b10a3e1caa969e3f 100644 GIT binary patch delta 1160 zcmZuw-ESL35Wn3!pU)p>rw~N~l5mQU=vCsSQjv)Gkn0@khiXtAgnBR5^>$mkweO<6 zJ%vOLE+s$(0RaX@qN0i)C_J>GA1@UIka*)C;9+0s)vkExpU}?wq{@P>w7=QencvK4 zcJ`yWzh+9IY33DJ`yV7{uNS^5&Gwq05rv?(;-(V0XslxwgT!rhS)q7GqZz6Xu$zUm zL9;YR^8?i_5S3_~id!TZqJuO^mKY#Q(oS+De?}t(QrtvtnV`C2oA+h%nvDcH;A45d znf#4VslSJvITO_ADFCb&aS6>nd{!bdF5ri3>h`>P485U&wPtHf2g$M$3<)^^TV(|h zBJahd6*h>+JtiZv(qkz1f7BLwv!F-vQl^ca^%LDO_KB0Vx|AQr5FPOHfz4tbC6@L>Cdk8`}Fl zZ56FTwei0)yaj8tI~eY6A30H}zEnR_Ie6&hq<<;7vz1)f8-BN$eDd49Z*Szsj*BZE z^E%dfy0&NyzxnCzFJGk8)L%OP{PF#-e|WIBm0aH*eR^?t^Vj6cXOmRuO3z!gMpr)= z{c(9T*h-mc6yQUqd!O&7{Nc5$ckkSq48bUmSpe*Dy~*#}$)y`WdQ#y}Dq;P_H@#My z_K3wp%lF!T-1a!NCg>K4sWjGXLuk#8=L5SG&u%Bg-~uz20XmRU!&3g<^oxfvS_ z_7s}|!Jd{dFFpHznhQOlRUn)&E7ht~uQ!f6ry56>#J&l&?o>}Y%WS{oJui8NQ(Job zt)n%l_wYN_Af!HV;rJ3?0n*3Wh delta 1890 zcmb7F;cwGM6!+Oq;y7*Ev`{EeYVv8>2DGI`BtlG~&87eiQxY`r7t76E+q6j>&bCmi zR4Eb+F;NC&8WY;4R+@yw1Z-m(Y#{C1B>n||+h|6r?Jtiq`(fOKH{l>|JBQTG z%mTOL(71^EJ8&ncx-iOck{FA|(b?!|dg|oJ!0Bi-lg*T~$5UrM_-mh@Ghl#=?B)PH40mI1H-~+n3s5J?{sVEGtiaW{e82wjrwZh$EI;`E_v=5@FWhe2JzKlz z+kR-}v!7QkTw4C=suIuTAcv!5MoEq+Z>&80ta0b7`uwAq5`G<@;YjViuebUt7a0N+ zSsUH_H~Ha+8*8krLje?*Q=OJ#N;*EOG;UsNT>MUnr&Aj}y5*|=zk0o59k+HbN*7Za z7jD(>+*tnc;_{;#jk{meuPi*h`OU_4*DDTRjkAicdWEEI7Ipp7`TCWw*Evn%C-Z05 z7=FP{{n{l3M4RTVnXEBQO3Kq4=jykw*Uvw2xrhj=pOT3@ERx5y$Nq4Y?XaA?!y>#R zt&&8yLRUF~HTOyEw5?5=YdNhO7J_Zn1K-e{40-_~EtK`F>Q5)$OCC>Y$q^@%vCM(K z{-M6XzW(O^cB-AGWooNRt-1fzP~0@_B1ywGNR!hxF)cNqyDE)E=!jFMQF1)kE|yJ4 z95e8Y6M*i(aAM^3f~k5fLo4cK$5SwLY(`|-&7#`IU_?F-BF{9WPeCR_sit5e6*(mx}2A0@$C$kq$y6c7cQs!I8(Aj1dV*sKvb{zC{QkNs!v) IVArmH0F|;a!~g&Q diff --git a/AI/WxMini/Utils/__pycache__/TtsUtil.cpython-310.pyc b/AI/WxMini/Utils/__pycache__/TtsUtil.cpython-310.pyc index 1226d2daf9f22125af2ea3298a27d991055a3942..88b6136773fb0b01ade8ac4de5e5dd0075c19b3b 100644 GIT binary patch delta 64 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 delta 6223 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