Files
exchange_monitor_sync/sync/__pycache__/base_sync.cpython-311.pyc

49 lines
6.8 KiB
Plaintext
Raw Normal View History

2025-12-04 15:40:19 +08:00
<EFBFBD>
<00><>0i<30><00><00><><00>ddlmZmZddlmZddlmZmZmZm Z m
Z
ddl Z ddl Z ddl Z ddlmZddlmZddlmZmZGd<08>d e<01><00>ZdS)
<EFBFBD>)<02>ABC<42>abstractmethod)<01>logger)<05>List<73>Dict<63>Any<6E>Set<65>OptionalN)<01> RedisClient)<01>DatabaseManager)<02>COMPUTER_NAMES<45>COMPUTER_NAME_PATTERNc<00><><00>eZdZdZd<02>Zed<03><00><00>Zedeeeffd<05><04><00>Z de
defd<08>Z dd
e ed eeefde efd <0C>Z d ede efd<0E>Zdedefd<10>Zddedefd<15>Zddefd<18>Zd<19>Zd S)<1D>BaseSyncu 同步基类c<00>l<00>t<00><00>|_t<00><00>|_dddddd<02>|_dS)Nr<00><05>total_accounts<74> success_count<6E> error_count<6E>last_sync_time<6D> avg_sync_time)r <00> redis_clientr <00>
db_manager<EFBFBD>
sync_stats<EFBFBD><01>selfs <20>5/root/project/exchange_monitor_sync/sync/base_sync.py<70>__init__zBaseSync.__init__s<<00><00>'<27>M<EFBFBD>M<EFBFBD><04><19>)<29>+<2B>+<2B><04><0F><1F><1E><1C><1F><1E> 
<EFBFBD>
<EFBFBD><04><0F><0F><0F>c<00><00>
K<00>dS)u!执行同步兼容旧接口N<EFBC89>rs r<00>syncz BaseSync.sync<00> <00><00><00><00> <0A>r<00>accountsc<00><00>
K<00>dS)u批量同步数据Nr!)rr$s r<00>
sync_batchzBaseSync.sync_batch!r#r<00>value<75>returnc<00>J<00>|<01>dSt|t<00><00>r|rdndSt|ttf<02><00>rt |<01><00>St|t<00><00>r|<01>dd<06><00>}d|<02>d<05>St |<01><00><00>dd<06><00>}d|<02>d<05>S)u 转义SQL值N<E580BC>NULL<4C>1<>0<>'z'')<06>
isinstance<EFBFBD>bool<6F>int<6E>float<61>str<74>replace)rr'<00>escapeds r<00>_escape_sql_valuezBaseSync._escape_sql_value's<><00><00> <10>=<3D><19>6<EFBFBD> <15>e<EFBFBD>T<EFBFBD> "<22> "<22> )<29><1F>(<28>3<EFBFBD>3<EFBFBD>S<EFBFBD> (<28> <15>e<EFBFBD>c<EFBFBD>5<EFBFBD>\<5C> *<2A> *<2A> <1E><16>u<EFBFBD>:<3A>:<3A> <1D> <15>e<EFBFBD>S<EFBFBD> !<21> !<21> "<22><1B>m<EFBFBD>m<EFBFBD>C<EFBFBD><14>.<2E>.<2E>G<EFBFBD>!<21>w<EFBFBD>><3E>><3E>><3E> !<21><15>e<EFBFBD>*<2A>*<2A>$<24>$<24>S<EFBFBD>$<24>/<2F>/<2F><07><1D>7<EFBFBD>~<7E>~<7E>~<7E>rN<> data_list<73>fields_mappingc<00><><00>g}|D]<5D>} g}|<04><00><00>D]@\}}|r ||vr ||}n|}|<00>|<07><00>} |<05>| <09><00><00>Ad<01>|<05><00>}
|<03>d|
<EFBFBD>d<03><03><00><00><>#t$r$} t jd|<04>d| <0B><00><04><00>Yd} ~ <0B><>d} ~ wwxYw|S)u构建SQL VALUES列表z, <20>(<28>)u构建SQL值失败: z, error=N)<07>itemsr5<00>append<6E>join<69> Exceptionr<00>error) rr6r7<00> values_list<73>data<74> value_parts<74>fieldr'<00>db_field<6C> escaped_value<75>
values_str<EFBFBD>es r<00>_build_sql_values_listzBaseSync._build_sql_values_list7s<00><00><18> <0B><1D> <19> <19>D<EFBFBD> <19> <20> <0B>$(<28>J<EFBFBD>J<EFBFBD>L<EFBFBD>L<EFBFBD>6<>6<>L<EFBFBD>E<EFBFBD>5<EFBFBD>%<25>)<29>%<25>><3E>*A<>*A<>#1<>%<25>#8<><08><08>#(<28><08>$(<28>$:<3A>$:<3A>5<EFBFBD>$A<>$A<>M<EFBFBD><1F>&<26>&<26>}<7D>5<>5<>5<>5<>!<21>Y<EFBFBD>Y<EFBFBD>{<7B>3<>3<>
<EFBFBD><1B>"<22>"<22>#4<>z<EFBFBD>#4<>#4<>#4<>5<>5<>5<>5<><35><1C> <19> <19> <19><16> <0C>E<>D<EFBFBD>E<>E<>!<21>E<>E<>F<>F<>F<><18><08><08><08><08><><EFBFBD><EFBFBD><EFBFBD> <19><><EFBFBD><EFBFBD><1B>s<00>BB<02>
B<<05>B7<05>7B<<05>daysc<00><><00>ddlm}m}g}|<02><00><00>}t|<01><00>D]9}|||<06><03><00>z
}|<04>|<07>d<04><00><00><00><00>:|S)u获取最近N天的日期列表r)<02>datetime<6D> timedelta)rI<00>%Y-%m-%d)rKrL<00>now<6F>ranger<<00>strftime)rrIrKrL<00>dates<65>today<61>i<>dates r<00>_get_recent_dateszBaseSync._get_recent_datesQs~<00><00>0<>0<>0<>0<>0<>0<>0<>0<><12><05><18> <0C> <0C><0E><0E><05><16>t<EFBFBD><1B><1B> 4<> 4<>A<EFBFBD><18>9<EFBFBD>9<EFBFBD>!<21>,<2C>,<2C>,<2C>,<2C>D<EFBFBD> <11>L<EFBFBD>L<EFBFBD><14><1D><1D>z<EFBFBD>2<>2<> 3<> 3<> 3<> 3<><14> r<00>date_strc<00><><00>ddlm} |<02>|d<03><00>}t|<03><00><00><00><00>S#t$rYdSwxYw)u4将日期字符串转换为时间戳当天0点r)rKrM)rK<00>strptimer0<00> timestamp<6D>
ValueError)rrVrK<00>dts r<00>_date_to_timestampzBaseSync._date_to_timestamp^sf<00><00>%<25>%<25>%<25>%<25>%<25>%<25> <15><19>"<22>"<22>8<EFBFBD>Z<EFBFBD>8<>8<>B<EFBFBD><16>r<EFBFBD>|<7C>|<7C>~<7E>~<7E>&<26>&<26> &<26><><19> <15> <15> <15><14>1<EFBFBD>1<EFBFBD> <15><><EFBFBD>s<00>6?<00>
A <03> A Tr<00>success<73> sync_timec<00><><00>|r|jdxxdz cc<n|jdxxdz cc<|dkrG||jd<|jddkr ||jd<d S|jddz|dzz|jd<d Sd S)
u更新统计信息r<00>rrrrg<><67><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?g<><67><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?N<>r)rr]r^s r<00> update_statszBaseSync.update_statshs<><00><00> <12> 0<> <10>O<EFBFBD>O<EFBFBD> ,<2C> ,<2C> ,<2C><01> 1<> ,<2C> ,<2C> ,<2C> ,<2C> <10>O<EFBFBD>M<EFBFBD> *<2A> *<2A> *<2A>a<EFBFBD> /<2F> *<2A> *<2A> *<2A> <14>q<EFBFBD>=<3D>=<3D>09<30>D<EFBFBD>O<EFBFBD>,<2C> -<2D><13><EFBFBD><EFBFBD>/<2F>1<EFBFBD>4<>4<>3<<3C><04><0F><0F>0<>0<>0<><19>O<EFBFBD>O<EFBFBD>4<>s<EFBFBD>:<3A>Y<EFBFBD><13>_<EFBFBD>L<><15><0F><0F>0<>0<>0<> <19>=r<00><00> sync_typec <00><><00>|j}|rd|<01>d<02>nd}|<03>d|d<00>d|d<00>d|d <00>d
|d d <0C>d |dd <0C>d<0F> }|d dkrtj|<04><00>dStj|<04><00>dS)u打印统计信息<E4BFA1>[z] rcu统计: 账号数=ru , 成功=ru , 失败=ru, 本次耗时=rz.2fus, 平均耗时=r<00>srN)rr<00>warning<6E>info)rrd<00>stats<74>prefix<69> stats_strs r<00> print_statszBaseSync.print_statsys<><00><00><14><0F><05>&/<2F>7<>"<22>Y<EFBFBD>"<22>"<22>"<22>"<22>R<EFBFBD><06><16> :<3A> :<3A><15>/?<3F>)@<40> :<3A> :<3A><1B>O<EFBFBD>,<2C> :<3A> :<3A>7<<3C>]<5D>7K<37> :<3A> :<3A>!<21>"2<>3<> <<3C> :<3A> :<3A>"<22>/<2F>2<> 9<> :<3A> :<3A> :<3A> <12> <11><1D> <1F>!<21> #<23> #<23> <12>N<EFBFBD>9<EFBFBD> %<25> %<25> %<25> %<25> %<25> <12>K<EFBFBD> <09> "<22> "<22> "<22> "<22> "rc<00> <00>dddddd<02>|_dS)u重置统计信息rrNrars r<00> reset_statszBaseSync.reset_stats<74>s%<00><00> <20><1E><1C><1F><1E> 
<EFBFBD>
<EFBFBD><04><0F><0F>r)N)Tr)rc)<16>__name__<5F>
__module__<EFBFBD> __qualname__<5F>__doc__rrr"rr2r&rr5rrHr0rUr\r/r1rbrmror!rrrr sw<00><00><00><00><00><00><16><16> 
<EFBFBD> 
<EFBFBD> 
<EFBFBD><14> <0A> <0A><14>^<5E> <0A><14> <0A><14>c<EFBFBD>4<EFBFBD>i<EFBFBD><1F> <0A> <0A> <0A><14>^<5E> <0A>
<1E>s<EFBFBD><1E>s<EFBFBD><1E><1E><1E><1E> <1B><1B><04>T<EFBFBD>
<EFBFBD><1B>D<EFBFBD>QT<51>VY<56>QY<51>N<EFBFBD><1B>fj<66>kn<6B>fo<66><1B><1B><1B><1B>4 <15>c<EFBFBD> <15>d<EFBFBD>3<EFBFBD>i<EFBFBD> <15> <15> <15> <15><15>3<EFBFBD><15>3<EFBFBD><15><15><15><15><12><12>D<EFBFBD><12>E<EFBFBD><12><12><12><12>"#<23>#<23>S<EFBFBD>#<23>#<23>#<23>#<23>"
<EFBFBD>
<EFBFBD>
<EFBFBD>
<EFBFBD>
rr)<16>abcrr<00>logurur<00>typingrrrr r
<00>json<6F>re<72>time<6D>utils.redis_clientr <00>utils.database_managerr <00>config.settingsr rrr!rr<00><module>r}s<><00><01>#<23>#<23>#<23>#<23>#<23>#<23>#<23>#<23><19><19><19><19><19><19>1<>1<>1<>1<>1<>1<>1<>1<>1<>1<>1<>1<>1<>1<> <0B> <0B> <0B> <0B> <09> <09> <09> <09> <0B> <0B> <0B> <0B>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>2<>2<>2<>2<>2<>2<>A<>A<>A<>A<>A<>A<>A<>A<>E
<EFBFBD>E
<EFBFBD>E
<EFBFBD>E
<EFBFBD>E
<EFBFBD>s<EFBFBD>E
<EFBFBD>E
<EFBFBD>E
<EFBFBD>E
<EFBFBD>E
r