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

119 lines
19 KiB
Plaintext
Raw Normal View History

2025-12-04 15:40:19 +08:00
<EFBFBD>
E1i<31>;<00><00><><00>ddlZddlmZddlZddlZddlZddlZddlmZddl Z ddl
m Z ddl m Z ddlmZddlmZddlmZdd lmZdd
lmZdd lmZmZdd lmZmZmZmZmZGd <0A>d<0E><00>ZdS)<0F>N)<01>logger)<01>Dict)<01> RedisClient)<01> SYNC_CONFIG<49>)<01>PositionSyncBatch)<01>OrderSyncBatch)<01>AccountSyncBatch)<01>RedisBatchHelper)<02>COMPUTER_NAMES<45>COMPUTER_NAME_PATTERN)<05>Listr<00>Any<6E>Set<65>Optionalc <00>2<00>eZdZdZd<02>Zd<03>Zdeeeffd<05>Zde efd<06>Z
dedeeeffd<08>Z deeeffd <09>Z deeeffd
<EFBFBD>Z d edefd <0C>Z d edededeefd<10>Zdeeefdeee effd<12>Zdefd<14>Zd<15>Zd<16>ZdS)<18> SyncManageru'同步管理器完整批量版本c <00>b<00>d|_t<00><00>|_td|_|<00><00><00>|_tjt<00><00>|_
d|_ g|_ tdr<t<00><00>}|j <00>|<01><00>tjd<04><00>tdr<t#<00><00>}|j <00>|<02><00>tjd<06><00>tdr<t%<00><00>}|j <00>|<03><00>tjd<08><00>d d d d d d d
<EFBFBD>d d d d <0B>d d d d <0C>d <0A>|_t)jt(j|j<00><00>t)jt(j|j<00><00>dS)NT<4E>interval<61>enable_position_syncu启用持仓批量同步<E5908C>enable_order_syncu启用订单批量同步<E5908C>enable_account_syncu启用账户信息批量同步r)<03>accounts<74> positions<6E>time)r<00>ordersr)r<00>recordsr)<06> total_syncs<63>last_sync_time<6D> avg_sync_time<6D>position<6F>order<65>account)<18>
is_runningr<00> redis_clientr<00> sync_interval<61>_get_computer_names<65>computer_names<65>re<72>compiler <00>computer_name_pattern<72> redis_helper<65>syncersr<00>appendr<00>infor r
<00>stats<74>signal<61>SIGINT<4E>signal_handler<65>SIGTERM)<04>self<6C> position_sync<6E>
order_sync<EFBFBD> account_syncs <20>3/root/project/exchange_monitor_sync/sync/manager.py<70>__init__zSyncManager.__init__s<><00><00><1E><04><0F>'<27>M<EFBFBD>M<EFBFBD><04><19>(<28><1A>4<><04><1A>"<22>6<>6<>8<>8<><04><1B>%'<27>Z<EFBFBD>0E<30>%F<>%F<><04>"<22>!<21><04><19><1A><04> <0C> <16>-<2D> .<2E> 4<>-<2D>/<2F>/<2F>M<EFBFBD> <10>L<EFBFBD> <1F> <1F> <0A> .<2E> .<2E> .<2E> <12>K<EFBFBD>2<> 3<> 3<> 3<> <16>*<2A> +<2B> 4<>'<27>)<29>)<29>J<EFBFBD> <10>L<EFBFBD> <1F> <1F>
<EFBFBD> +<2B> +<2B> +<2B> <12>K<EFBFBD>2<> 3<> 3<> 3<> <16>,<2C> -<2D> :<3A>+<2B>-<2D>-<2D>L<EFBFBD> <10>L<EFBFBD> <1F> <1F> <0C> -<2D> -<2D> -<2D> <12>K<EFBFBD>8<> 9<> 9<> 9<><1D><1F><1E>%&<26>Q<EFBFBD><01>B<>B<>"#<23>q<EFBFBD>!<21><<3C><<3C>$%<25>!<21>Q<EFBFBD>?<3F>?<3F> 
<EFBFBD>
<EFBFBD><04>
<EFBFBD> <0F> <0A>f<EFBFBD>m<EFBFBD>T<EFBFBD>%8<>9<>9<>9<><0E> <0A>f<EFBFBD>n<EFBFBD>d<EFBFBD>&9<>:<3A>:<3A>:<3A>:<3A>:<3A>c<00><00>j<00>K<00>tjd|j<00>d<02><03><00>|j<00>r
|<00><00><00><00><07>s4tjd<03><00>t j|j<00><00><00>d{V<00><03><00>S|jdxxdz cc<tj <00><00>}tjd|jd<00>dt<00><07><00><00>d <09><05><00><00>fd
<EFBFBD>|j D<00><00>}t j |d d i<01><01>d{V<00><03>tj <00><00>|z
}|<00> |<03><00>tjd |d<0E>d|j<00>d<02><05><00>t j|j<00><00><00>d{V<00><03>n<>#t j$rtjd<10><00>YdSt$r<>}tjd|<04><00><02><00>ddl}t%|<04><00>jt)|<04><00>|<05><00><00>d<13>}tjd|d<00><16><00>t jd<17><00><00>d{V<00><03>Yd}~nd}~wwxYw|j<00><02>dSdS)u启动同步服务u同步服务启动,间隔 u 秒u-未获取到任何账号等待下次同步Nrru第u次同步开始,共 <20>
个账号c<00>:<00><01>g|]}|<01><00><02><00><00><02>S<00>)<01>
sync_batch)<03>.0<EFBFBD>syncerrs <20>r9<00>
<listcomp>z%SyncManager.start.<locals>.<listcomp>Ws'<00><><00>P<>P<>P<><16><16>*<2A>*<2A>8<EFBFBD>4<>4<>P<>P<>Pr;<00>return_exceptionsTu同步完成,总耗时 <20>.2fu 秒,等待 u同步任务被取消u同步任务异常: r)<03>
error_type<EFBFBD> error_message<67> tracebacku完整堆栈跟踪:
{traceback}rH)rH<00>)rr/r&r$<00>get_accounts_from_redis<69>warning<6E>asyncio<69>sleepr0r<00>lenr-<00>gather<65> _update_stats<74>CancelledError<6F> Exception<6F>errorrH<00>type<70>__name__<5F>str<74>
format_exc)r5<00>
sync_start<EFBFBD>tasks<6B> sync_time<6D>erH<00> error_detailsrs @r9<00>startzSyncManager.startAs<><00><><00><00><00><0E> <0B>K<>4<EFBFBD>3E<33>K<>K<>K<>L<>L<>L<><12>o<EFBFBD>+ (<28>* (<28> <20>7<>7<>9<>9<><08><1F><1D><1A>N<EFBFBD>#R<>S<>S<>S<>!<21>-<2D><04>(:<3A>;<3B>;<3B>;<3B>;<3B>;<3B>;<3B>;<3B>;<3B>;<3B><1C><15>
<EFBFBD>=<3D>)<29>)<29>)<29>Q<EFBFBD>.<2E>)<29>)<29>)<29>!<21>Y<EFBFBD>[<5B>[<5B>
<EFBFBD><16> <0B>l<>$<24>*<2A>]<5D>";<3B>l<>l<>SV<53>W_<57>S`<60>S`<60>l<>l<>l<>m<>m<>m<>Q<01>P<>P<>P<>4<EFBFBD><<3C>P<>P<>P<><05><1D>n<EFBFBD>e<EFBFBD>D<>t<EFBFBD>D<>D<>D<>D<>D<>D<>D<>D<>D<>!<21>I<EFBFBD>K<EFBFBD>K<EFBFBD>*<2A>4<> <09><14>"<22>"<22>9<EFBFBD>-<2D>-<2D>-<2D><16> <0B>m<> <09>m<>m<>m<>UY<55>Ug<55>m<>m<>m<>n<>n<>n<><1D>m<EFBFBD>D<EFBFBD>$6<>7<>7<>7<>7<>7<>7<>7<>7<>7<>7<><37><1A>)<29> <16> <16> <16><16> <0B>3<>4<>4<>4<><15><05><05><1C> (<28> (<28> (<28><16> <0C>7<>A<EFBFBD>7<>7<>8<>8<>8<>!<21> <20> <20> <20>"&<26>q<EFBFBD>'<27>'<27>"2<>%(<28><11>V<EFBFBD>V<EFBFBD>!*<2A>!5<>!5<>!7<>!7<>!<12>!<12> <0A>
<17> <0C>?<3F>=<3D>Yd<59>Ke<4B>f<>f<>f<>f<><1D>m<EFBFBD>B<EFBFBD>'<27>'<27>'<27>'<27>'<27>'<27>'<27>'<27>'<27>'<27>'<27>'<27>'<27>'<27><><EFBFBD><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD>A<13>o<EFBFBD>+ (<28>+ (<28>+ (<28>+ (<28>+ (s&<00>A E%<00>4C0E%<00>%#H&<03> H&<03>BH!<03>!H&<03>returnc<00><><00> i}d}|jD]1}|<00>|<03><00>}|dz }|<01>|<04><00><00>2|s(tjd<03><00>|<00><00><00>}tjdt|j<00><00><00>dt|<01><00><00>d<06><05><00>|S#t$r#}tj d|<05><00><02><00>icYd}~Sd}~wwxYw) u/从Redis获取所有计算机名的账号配置rru<配置的计算机名未找到数据,尝试自动发现...<2E>从 u 个计算机名获取到 r=u获取账户信息失败: N)
r(<00>_get_accounts_by_computer_name<6D>updaterrK<00>_discover_all_accountsr/rNrRrS)r5<00> accounts_dict<63>total_keys_processed<65> computer_namerr[s r9rJz#SyncManager.get_accounts_from_redisrs <00><00> <16><1E>M<EFBFBD>#$<24> <20>"&<26>!4<> /<2F> /<2F> <0A><1F>><3E>><3E>}<7D>M<>M<><08>$<24><01>)<29>$<24><1D>$<24>$<24>X<EFBFBD>.<2E>.<2E>.<2E>.<2E>!<21> ><3E><16><0E>]<5D>^<5E>^<5E>^<5E> $<24> ;<3B> ;<3B> =<3D> =<3D> <0A> <12>K<EFBFBD>q<>s<EFBFBD>4<EFBFBD>#6<>7<>7<>q<>q<>SV<53>Wd<57>Se<53>Se<53>q<>q<>q<> r<> r<> r<> <20> <20><><18> <16> <16> <16> <12>L<EFBFBD>9<>a<EFBFBD>9<>9<> :<3A> :<3A> :<3A><15>I<EFBFBD>I<EFBFBD>I<EFBFBD>I<EFBFBD>I<EFBFBD>I<EFBFBD><49><EFBFBD><EFBFBD><EFBFBD> <16><><EFBFBD>s<00>B"B%<00>%
C<03>/C <03>C<03> Cc<00><><00>dtvr7d<02>tjd<01><00>D<00><00>}tjd|<01><00><02><00>|Stj<00><00>gS)u获取计算机名列表<E58897>,c<00>6<00>g|]}|<01><00><00><00><02>Sr?)<01>strip)rA<00>names r9rCz3SyncManager._get_computer_names.<locals>.<listcomp><3E>s <00><00>H<>H<>H<>d<EFBFBD>T<EFBFBD>Z<EFBFBD>Z<EFBFBD>\<5C>\<5C>H<>H<>Hr;u#使用配置的计算机名列表: )r <00>splitrr/rj)r5<00>namess r9r'zSyncManager._get_computer_names<65>s[<00><00> <0E>.<2E> <20> <20>H<>H<>n<EFBFBD>.B<>3<EFBFBD>.G<>.G<>H<>H<>H<>E<EFBFBD> <12>K<EFBFBD>E<>e<EFBFBD>E<>E<> F<> F<> F<><18>L<EFBFBD><1E>$<24>&<26>&<26>'<27>'r;rfc<00>\<00>i} |<01>d<01>}|jj<00>|<03><00>}|stjd|<03>d<03><03><00>iStjd|<03>dt |<04><00><00>d<06><05><00>|<04><00><00>D]<5D>\}} tj |<06><00>}|s<01>|<00>
|<05><00>}|<07><00><00>D](\} }
|<00> || |
<EFBFBD><00>} | r
|| d<| || <<00>)<29>p#tj $r$} tj d|<05>d | <0C><00><04><00>Yd
} ~ <0C><>d
} ~ wt$r$} tj d |<05>d | <0C><00><04><00>Yd
} ~ <0C><>d
} ~ wwxYwtjd|<03>d t |<02><00><00>d<0E><05><00>n1#t$r$} tj d|<01>d| <0C><00><04><00>Yd
} ~ nd
} ~ wwxYw|S)u!获取指定计算机名的账号<E8B4A6> _strategy_apiu
未找到 u 的策略API配置r`u 获取到 u 个交易所配置rfu解析交易所 u 的JSON数据失败: Nu处理交易所 <20> 数据异常: u 解析到 r=u获取计算机名 u 的账号失败: )r%<00>client<6E>hgetallr<00>debugr/rN<00>items<6D>json<6F>loads<64>format_exchange_id<69> parse_account<6E>JSONDecodeErrorrSrR) r5rfrd<00> redis_key<65>result<6C> exchange_name<6D> accounts_jsonr<00> exchange_id<69>
account_id<EFBFBD> account_info<66>parsed_accountr[s r9raz*SyncManager._get_accounts_by_computer_name<6D>sV<00><00><1A> <0A>& U<01>(<28>7<>7<>7<>I<EFBFBD><1A>&<26>-<2D>5<>5<>i<EFBFBD>@<40>@<40>F<EFBFBD><19> <1A><16> <0C>H<>)<29>H<>H<>H<>I<>I<>I<><19> <09> <12>K<EFBFBD>U<>y<EFBFBD>U<>U<>S<EFBFBD><16>[<5B>[<5B>U<>U<>U<> V<> V<> V<>06<30> <0C> <0C><0E><0E> <1D> <1D>,<2C> <0A>}<7D><1D>#<23>z<EFBFBD>-<2D>8<>8<>H<EFBFBD>#<23>!<21> <20>#'<27>"9<>"9<>-<2D>"H<>"H<>K<EFBFBD>4<<3C>N<EFBFBD>N<EFBFBD>4D<34>4D<34>G<01>G<01>0<>
<EFBFBD>L<EFBFBD>)-<2D>);<3B>);<3B>K<EFBFBD><1A>Ua<55>)b<>)b<><0E>)<29>G<01>>K<>N<EFBFBD>?<3F>;<3B>8F<38>M<EFBFBD>*<2A>5<><35> G<01><><1C>+<2B><1D><1D><1D><1A>L<EFBFBD>!\<5C>M<EFBFBD>!\<5C>!\<5C>YZ<59>!\<5C>!\<5C>]<5D>]<5D>]<5D><1C>H<EFBFBD>H<EFBFBD>H<EFBFBD>H<EFBFBD><48><EFBFBD><EFBFBD><EFBFBD> <20><1D><1D><1D><1A>L<EFBFBD>!U<>M<EFBFBD>!U<>!U<>RS<52>!U<>!U<>V<>V<>V<><1C>H<EFBFBD>H<EFBFBD>H<EFBFBD>H<EFBFBD><48><EFBFBD><EFBFBD><EFBFBD><1D><><EFBFBD><EFBFBD> <13>K<EFBFBD>S<>y<EFBFBD>S<>S<>S<EFBFBD><1D>5G<35>5G<35>S<>S<>S<> T<> T<> T<> T<><54><18> U<01> U<01> U<01> <12>L<EFBFBD>S<>}<7D>S<>S<>PQ<50>S<>S<> T<> T<> T<> T<> T<> T<> T<> T<><54><EFBFBD><EFBFBD><EFBFBD> U<01><><EFBFBD><EFBFBD><1D>sg<00>?E;<00>AE;<00>C0<02>E;<00>AC0<02>/E;<00>0E<05>?D<05>E;<00> E<05>+E
<05>E;<00>
E<05>+E;<00>;
F)<03>F$<03>$F)c<00><><00>i}g} d}d} |jj<00>||d<04><05><00>\}}|D]C}t|t<00><00>r|<06>d<06><00>n|}|<02>|<07><00><00>D|dkrn<01>stjdt|<02><00><00>d<08><03><00>|D]t}|<07>
d d
<EFBFBD><00>}|j <00> |<08><00>r+|<00> |<08><00>} |<01>| <09><00><00>]tjd |<08><00><02><00><00>utjd t|<01><00><00>d <0A><03><00>n.#t $r!}
tjd|
<EFBFBD><00><02><00>Yd}
~
nd}
~
wwxYw|S<00>u$自动发现所有匹配的账号keyz*_strategy_apirT<>d)<02>match<63>countzutf-8u 自动发现 u 个策略API keyro<00>u&跳过不符合格式的计算机名: u自动发现共获取到 r=u自动发现账号失败: N<>r%rq<00>scan<61>
isinstance<EFBFBD>bytes<65>decoder.rr/rN<00>replacer+r<>rarbrKrRrS<00> r5rd<00>discovered_keys<79>pattern<72>cursor<6F>keys<79>key<65>key_strrfrr[s r9rcz"SyncManager._discover_all_accounts<74><00><><00><00><1A> <0A><1C><0F> ;<3B>&<26>G<EFBFBD><16>F<EFBFBD> <1A>#<23>0<>7<><<3C><<3C>V<EFBFBD>7<EFBFBD>Z]<5D><<3C>^<5E>^<5E> <0C><06><04><1F>4<>4<>C<EFBFBD>5?<3F><03>U<EFBFBD>5K<35>5K<35>T<>c<EFBFBD>j<EFBFBD>j<EFBFBD><17>1<>1<>1<>QT<51>G<EFBFBD>#<23>*<2A>*<2A>7<EFBFBD>3<>3<>3<>3<><19>Q<EFBFBD>;<3B>;<3B><19> <1A> <13>K<EFBFBD>O<><03>O<EFBFBD>(<<3C>(<<3C>O<>O<>O<> P<> P<> P<>+<2B> ]<01> ]<01><07> '<27><0F><0F><0F><12> D<> D<> <0A><18>-<2D>3<>3<>M<EFBFBD>B<>B<>]<01>#<23>B<>B<>=<3D>Q<>Q<>H<EFBFBD>!<21>(<28>(<28><18>2<>2<>2<>2<><1A>N<EFBFBD>#[<5B>M<EFBFBD>#[<5B>#[<5B>\<5C>\<5C>\<5C>\<5C> <12>K<EFBFBD>R<>C<EFBFBD> <0A>4F<34>4F<34>R<>R<>R<> S<> S<> S<> S<><53><18> ;<3B> ;<3B> ;<3B> <12>L<EFBFBD>9<>a<EFBFBD>9<>9<> :<3A> :<3A> :<3A> :<3A> :<3A> :<3A> :<3A> :<3A><><EFBFBD><EFBFBD><EFBFBD> ;<3B><><EFBFBD><EFBFBD><1D><1C><00>D9E<00>
E+<03>
E&<03>&E+c<00><><00>i}g} d}d} |jj<00>||d<04><05><00>\}}|D]C}t|t<00><00>r|<06>d<06><00>n|}|<02>|<07><00><00>D|dkrn<01>stjdt|<02><00><00>d<08><03><00>|D]t}|<07>
d d
<EFBFBD><00>}|j <00> |<08><00>r+|<00> |<08><00>} |<01>| <09><00><00>]tjd |<08><00><02><00><00>utjd t|<01><00><00>d <0A><03><00>n.#t $r!}
tjd|
<EFBFBD><00><02><00>Yd}
~
nd}
~
wwxYw|Sr<>r<>r<>s r9rcz"SyncManager._discover_all_accounts<74>r<>r<>r<>c<00>Z<00>|<01><00><00><00><00><00>}idd<02>dd<04>dd<04>dd<04>dd<07>dd <09>d d <09>d
d
<EFBFBD>d d
<EFBFBD>d d
<EFBFBD>d d <0A>dd <0A>dd<07>dd<07>dd<10>dd<10>dd<12>dddd<14><03>}|<02>||<01><00>}||kr-||<02><00><00>vrt jd|<01><00><02><00>|S)u格式化交易所ID<49>
metatrader<EFBFBD>mt5<74>binance_spot_test<73>binance<63> binance_spot<6F> gate_spot<6F>gate<74>okex<65>okx<6B>bybit<69>
bybit_spot<EFBFBD>
bybit_test<EFBFBD>huobi<62>
huobi_spot<EFBFBD>gateio<69>kucoin<69> kucoin_spot<6F>mexc<78>bitget)<03> mexc_spotr<74><00> bitget_spotu未映射的交易所名称: )<06>lowerrj<00>get<65>valuesrrs)r5r<><00>exchange_mapping<6E>normalized_keys r9rwzSyncManager.format_exchange_ids_<00><00><11>i<EFBFBD>i<EFBFBD>k<EFBFBD>k<EFBFBD><1F><1F>!<21>!<21><03>
<EFBFBD> <18>%<25>
<EFBFBD> <1F><19>
<EFBFBD> <1B>I<EFBFBD>
<EFBFBD> <16>y<EFBFBD> 
<EFBFBD>
<18><16> 
<EFBFBD> <13>E<EFBFBD> 
<EFBFBD> <12>5<EFBFBD>
<EFBFBD> <14>W<EFBFBD>
<EFBFBD> <19>'<27>
<EFBFBD> <19>'<27>
<EFBFBD> <14>W<EFBFBD>
<EFBFBD> <19>'<27>
<EFBFBD> <13>F<EFBFBD>
<EFBFBD> <15>f<EFBFBD>
<EFBFBD> <15>h<EFBFBD>
<EFBFBD> <1A>8<EFBFBD>!
<EFBFBD>" <13>F<EFBFBD>#
<EFBFBD>$ <20><1E>#<23>)
<EFBFBD>
<EFBFBD>
<EFBFBD><18>.*<2A>-<2D>-<2D>c<EFBFBD>3<EFBFBD>7<>7<><0E> <1A>S<EFBFBD> <20> <20>S<EFBFBD>0@<40>0G<30>0G<30>0I<30>0I<30>%I<>%I<> <12>L<EFBFBD>><3E><13>><3E>><3E> ?<3F> ?<3F> ?<3F><1D>r;r~rr<>c <00><><00> tj|<03><00>}||tj|<04>d<01><00>d<02><00>tj|<04>d<03><00>d<02><00>|<04>dd<05><00>d<06>}|S#tj$r1}t jd|<02>d|<06>d |d
d <0B><00>d <0C><07><00>Yd
}~d
Sd
}~wt$r%}t jd |<02>d|<06><00><04><00>Yd
}~d
Sd
}~wwxYw)u解析账号信息<E4BFA1>st_idr<00>add_time<6D>api_keyr<79>)r~<00>k_idr<64>r<>r<>u 解析账号 u JSON数据失败: u, 原始数据: Nr<4E>z...u 处理账号 rp) rurv<00>helpers<72>safe_intr<74>ryrrSrR)r5r~rr<><00>source_account_info<66> account_datar[s r9rxzSyncManager.parse_account7s1<00><00> <18>"&<26>*<2A>\<5C>":<3A>":<3A> <1F> +<2B>"<22> <20>)<29>*=<3D>*A<>*A<>'<27>*J<>*J<>A<EFBFBD>N<>N<>#<23>,<2C>-@<40>-D<>-D<>Z<EFBFBD>-P<>-P<>RS<52>T<>T<>.<2E>2<>2<>9<EFBFBD>b<EFBFBD>A<>A<> <0E><0E>L<EFBFBD> <20> <1F><><13>#<23> <18> <18> <18> <12>L<EFBFBD>r<><1A>r<>r<><01>r<>r<>[g<>hl<68>il<69>hl<68>[m<>r<>r<>r<> s<> s<> s<><17>4<EFBFBD>4<EFBFBD>4<EFBFBD>4<EFBFBD>4<EFBFBD><34><EFBFBD><EFBFBD><EFBFBD><18> <18> <18> <18> <12>L<EFBFBD>G<><1A>G<>G<>A<EFBFBD>G<>G<> H<> H<> H<><17>4<EFBFBD>4<EFBFBD>4<EFBFBD>4<EFBFBD>4<EFBFBD><34><EFBFBD><EFBFBD><EFBFBD> <18><><EFBFBD>s$<00>A=B<00>C-<03>&B;<03>; C-<03>C(<03>(C-rc<00><><00>i}|<01><00><00>D]@\}}|<04>d<01><00>}|r$||vrg||<||<00>|<04><00><00>A|S)u按交易所分组账号r~)rtr<>r.)r5r<00>groupsrr<>r~s r9<00>_group_accounts_by_exchangez'SyncManager._group_accounts_by_exchangeNst<00><00><13><06>(0<><0E><0E>(8<>(8<> 9<> 9<> $<24>J<EFBFBD> <0C>&<26>*<2A>*<2A>=<3D>9<>9<>K<EFBFBD><1A> 9<><1E>f<EFBFBD>,<2C>,<2C>*,<2C>F<EFBFBD>;<3B>'<27><16>{<7B>#<23>*<2A>*<2A><<3C>8<>8<>8<><38><15> r;rZc <00>n<00>||jd<|jddz|dzz|jd<d|jd<00>d<07>d|d <09>d
|jdd <09>d <0B>g}|jd d dkrS|<02>d|jd d <00>d|jd d<00>d|jd dd <09>d <0B><07><00>|jdd dkrS|<02>d|jdd <00>d|jdd<00>d|jddd <09>d <0B><07><00>|jdd dkrS|<02>d|jdd <00>d|jdd<00>d|jddd <09>d <0B><07><00>tjd<1A>|<02><00><00><00>dS)u更新统计信息rr g<><67><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?g<><67><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?u=== 第ru次同步统计 ===u 总耗时: rEu秒 | 平均耗时: u秒r!rru持仓: u账号/ru条/rr"u订单: rr#u账户: r<00>
N)r0r.rr/<00>join)r5rZ<00> stats_liness r9rPzSyncManager._update_stats]s1<00><00>'0<><04>
<EFBFBD>#<23>$<24>'+<2B>z<EFBFBD>/<2F>'B<>S<EFBFBD>'H<>9<EFBFBD>WZ<57>?<3F>'Z<><04>
<EFBFBD>?<3F>#<23> E<01>d<EFBFBD>j<EFBFBD><1D>/<2F> D<> D<> D<> a<>)<29> a<> a<> a<>T<EFBFBD>Z<EFBFBD><0F>=X<> a<> a<> a<> a<>
<EFBFBD> <0B>
<10>:<3A>j<EFBFBD> !<21>*<2A> -<2D><01> 1<> 1<> <17> <1E> <1E><<3C>4<EFBFBD>:<3A>j<EFBFBD>1<>*<2A>=<3D><<3C><<3C>d<EFBFBD>j<EFBFBD>Q[<5B>F\<5C>]h<>Fi<46><<3C><<3C><18>J<EFBFBD>z<EFBFBD>*<2A>6<EFBFBD>2<>;<3B><<3C><<3C><<3C> <0E> <0E> <0E>
<10>:<3A>g<EFBFBD> <1E>z<EFBFBD> *<2A>Q<EFBFBD> .<2E> .<2E> <17> <1E> <1E>9<>4<EFBFBD>:<3A>g<EFBFBD>.<2E>z<EFBFBD>:<3A>9<>9<>4<EFBFBD>:<3A>g<EFBFBD>CV<43>W_<57>C`<60>9<>9<><18>J<EFBFBD>w<EFBFBD>'<27><06>/<2F>8<>9<>9<>9<> <0E> <0E> <0E>
<10>:<3A>i<EFBFBD> <20><1A> ,<2C>q<EFBFBD> 0<> 0<> <17> <1E> <1E>;<3B>4<EFBFBD>:<3A>i<EFBFBD>0<><1A><<3C>;<3B>;<3B>T<EFBFBD>Z<EFBFBD>PY<50>EZ<45>[d<>Ee<45>;<3B>;<3B><18>J<EFBFBD>y<EFBFBD>)<29>&<26>1<>:<3A>;<3B>;<3B>;<3B> <0E> <0E> <0E>
<0F> <0B>D<EFBFBD>I<EFBFBD>I<EFBFBD>k<EFBFBD>*<2A>*<2A>+<2B>+<2B>+<2B>+<2B>+r;c<00>D<00>tjd|<01>d<02><03><00>d|_dS)u信号处理器u接收到信号 u,正在关闭...FN)rr/r$)r5<00>signum<75>frames r9r3zSyncManager.signal_handler|s)<00><00><0E> <0B>A<>v<EFBFBD>A<>A<>A<>B<>B<>B<><1F><04><0F><0F>r;c<00><00><>K<00>d|_|jD]+}t|d<02><00>r|j<00><00><00><00>,t jd<03><00>dS)u停止同步服务F<E58AA1>
db_manageru同步服务停止N)r$r-<00>hasattrr<72><00>closerr/)r5rBs r9<00>stopzSyncManager.stop<6F>s_<00><00><00><00><1F><04><0F><1B>l<EFBFBD> *<2A> *<2A>F<EFBFBD><16>v<EFBFBD>|<7C>,<2C>,<2C> *<2A><16>!<21>'<27>'<27>)<29>)<29>)<29><><0E> <0B>(<28>)<29>)<29>)<29>)<29>)r;N)rU<00>
__module__<EFBFBD> __qualname__<5F>__doc__r:r]rrVrJrr'rarcrwrrxr<><00>floatrPr3r<>r?r;r9rrs<><00><00><00><00><00><00>1<>1<>(;<3B>(;<3B>(;<3B>T/(<28>/(<28>/(<28>b<16><14>c<EFBFBD>4<EFBFBD>i<EFBFBD><1F><16><16><16><16>2(<28>T<EFBFBD>#<23>Y<EFBFBD>(<28>(<28>(<28>(<28>,<1D>C<EFBFBD>,<1D>D<EFBFBD><13>d<EFBFBD><19>O<EFBFBD>,<1D>,<1D>,<1D>,<1D>\'<1D><04>S<EFBFBD>$<24>Y<EFBFBD><0F>'<1D>'<1D>'<1D>'<1D>R'<1D><04>S<EFBFBD>$<24>Y<EFBFBD><0F>'<1D>'<1D>'<1D>'<1D>R"<1E>c<EFBFBD>"<1E>c<EFBFBD>"<1E>"<1E>"<1E>"<1E>H<18><13><18>#<23><18>S<EFBFBD><18>U]<5D>^b<>Uc<55><18><18><18><18>. <16>D<EFBFBD><13>d<EFBFBD><19>O<EFBFBD> <16><04>S<EFBFBD>RV<52>W[<5B>R\<5C>_<EFBFBD>H]<5D> <16> <16> <16> <16>,<2C>u<EFBFBD>,<2C>,<2C>,<2C>,<2C>> <20> <20> <20>
*<2A> *<2A> *<2A> *<2A> *r;r)rL<00>logururr1<00>sysrru<00>typingrr)<00> utils.helpersr<73><00>utils.redis_clientr<00>config.settingsrr6rr7r r8r
<00>utils.redis_batch_helperr r r rrrrrr?r;r9<00><module>r<>s[<00><01><0E><0E><0E><0E><19><19><19><19><19><19> <0A> <0A> <0A> <0A>
<EFBFBD>
<EFBFBD>
<EFBFBD>
<EFBFBD> <0B> <0B> <0B> <0B> <0B> <0B> <0B> <0B><17><17><17><17><17><17> <09> <09> <09> <09><1F><1F><1F><1F><1F><1F>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>'<27>'<27>'<27>'<27>'<27>'<27>,<2C>,<2C>,<2C>,<2C>,<2C>,<2C>&<26>&<26>&<26>&<26>&<26>&<26>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>5<>5<>5<>5<>5<>5<>A<>A<>A<>A<>A<>A<>A<>A<>1<>1<>1<>1<>1<>1<>1<>1<>1<>1<>1<>1<>1<>1<>v*<2A>v*<2A>v*<2A>v*<2A>v*<2A>v*<2A>v*<2A>v*<2A>v*<2A>v*r;