hyb
2025-11-18 7539e6f48c75dcaeb808359cccfd1c0d0d182ce8
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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
Ë
 
çúhP(ãó²—UddlZddlZddlmZmZddlmZddlmZm    Z    m
Z
m Z ddl m Z ddlmZmZddlmZddlmZdd    lmZdd
lmZd Zd Zd ZdZej:e«ZGd„de«Z Gd„de«Z!Gd„de!«Z"Gd„de"«Z#Gd„de"«Z$Gd„de"«Z%Gd„de«Z&e&jNZ(e&e)d<Gd„de «Z*Gd „d!e «Z+y)"éN)ÚABCÚabstractmethod)ÚEnum)ÚListÚOptionalÚTupleÚUnion)ÚRedis)ÚDEFAULT_TIMEOUTÚAsyncHTTPClientWrapper)Ú    NoBackoff)Ú
HttpClient)ÚUnhealthyDatabaseException)ÚRetryéégà?iˆcó"—eZdZedefd„«Zy)Ú HealthCheckÚreturncƒó K—y­w)z(Function to determine the health status.N©)ÚselfÚdatabases  õtH:\项目\archive\测试组\脚本\Change_password\venv_build\Lib\site-packages\redis/asyncio/multidb/healthcheck.pyÚ check_healthzHealthCheck.check_healthó èø€ð     ùó‚N)Ú__name__Ú
__module__Ú __qualname__rÚboolrrórrrs„Øð ¨dò óñ r"rcóp—eZdZdZeedefd„««Zeedefd„««Z    ede
e de fd„«Z y)ÚHealthCheckPolicyz)
    Health checks execution policy.
    rcó—y)z*Number of probes to execute health checks.Nr©rs rÚhealth_check_probesz%HealthCheckPolicy.health_check_probes"ó€ð     r"có—y)z"Delay between health check probes.Nrr&s rÚhealth_check_delayz$HealthCheckPolicy.health_check_delay(r(r"Ú health_checkscƒó K—y­w)z8Execute health checks and return database health status.Nr©rr+rs   rÚexecutezHealthCheckPolicy.execute.rrN)rrr Ú__doc__ÚpropertyrÚintr'Úfloatr*rrr!r.rr"rr$r$st„ñðØð  Sò óóð ðØð  Eò óóð ðð ¨4° Ñ+<ð È4ò óñ r"r$cóh—eZdZdedefd„Zedefd„«Zedefd„«Ze    de
e de fd„«Z y    )
ÚAbstractHealthCheckPolicyr'r*có@—|dkr td«‚||_||_y)Néz*health_check_probes must be greater than 0)Ú
ValueErrorÚ_health_check_probesÚ_health_check_delay)rr'r*s   rÚ__init__z"AbstractHealthCheckPolicy.__init__5s&€Ø  Ò "ÜÐIÓJÐ JØ$7ˆÔ!Ø#5ˆÕ r"rcó—|jS©N)r8r&s rr'z-AbstractHealthCheckPolicy.health_check_probes;s€à×(Ñ(Ð(r"có—|jSr<)r9r&s rr*z,AbstractHealthCheckPolicy.health_check_delay?s€à×'Ñ'Ð'r"r+cƒó K—y­wr<rr-s   rr.z!AbstractHealthCheckPolicy.executeCs    èø€à ùrN)rrr r1r2r:r0r'r*rrrr!r.rr"rr4r44sr„ð6¨Cð6ÀUó6ð ð) Sò)óð)ðð( Eò(óð(ðð ¨4° Ñ+<ð È4ò óñ r"r4cóB‡—eZdZdZdedefˆfd„ Zdeede    fd„Z
ˆxZ S)ÚHealthyAllPolicyzM
    Policy that returns True if all health check probes are successful.
    r'r*có&•—t‰|||«yr<©Úsuperr:©rr'r*Ú    __class__s   €rr:zHealthyAllPolicy.__init__Móø€Ü ‰ÑÐ,Ð.@ÕAr"r+rcƒóBK—|D]t}t|j«D]Z}    |j|«ƒd{–—†sy    ||jdz
ksŒ4t j |j«ƒd{–—†Œ\Œvy7ŒG#t$r}t    d||«‚d}~wwxYw7Œ)­w)NFúUnhealthy databaser6T©Úranger'rÚ    ExceptionrÚasyncioÚsleepr9)rr+rÚ health_checkÚattemptÚes      rr.zHealthyAllPolicy.executePs·èø€Ø)ò        BˆLÜ  ×!9Ñ!9Ó:ò BðXØ!-×!:Ñ!:¸8Ó!D×DÐDÚ$ðEð
˜T×5Ñ5¸Ñ9Ó9Ü!Ÿ-™-¨×(@Ñ(@ÓA×AÑAñ Bð        BððEùä òXÜ4Ð5IÈ8ÐUVÓWÐWûðXúðBúsI‚B¡A?µA=¶A?ºBÁ"BÁ3BÁ4    BÁ=A?Á?    B BÂBÂB© rrr r/r1r2r:rrr!r.Ú __classcell__©rEs@rr@r@Hs6ø„ñðB¨CðBÀUõBð ¨4° Ñ+<ð È4÷ r"r@cóB‡—eZdZdZdedefˆfd„ Zdeede    fd„Z
ˆxZ S)ÚHealthyMajorityPolicyzW
    Policy that returns True if a majority of health check probes are successful.
    r'r*có&•—t‰|||«yr<rBrDs   €rr:zHealthyMajorityPolicy.__init__crFr"r+rcƒóÚK—|D]±}|jdzdk(r|jdz }n|jdzdz }t|j«D]c}    |j|«ƒd{–—†s |dz}|dkry||jdz
ksŒ=t j |j«ƒd{–—†ŒeŒ³y7ŒP#t$r!}|dz}|dkr t    d||«‚Yd}~Œfd}~wwxYw7Œ8­w)Nérr6FrHT)r'rJrrKrrLrMr9)rr+rrNÚallowed_unsuccessful_probesrOrPs       rr.zHealthyMajorityPolicy.executefsèø€Ø)ò    BˆLØ×'Ñ'¨!Ñ+¨qÒ0Ø.2×.FÑ.FÈÑ.JÑ+à/3×/GÑ/GÈ!Ñ/KÈqÑ.PÐ+ä  ×!9Ñ!9Ó:ò Bð
Ø!-×!:Ñ!:¸8Ó!D×DÐDØ3°qÑ8Ð3Ø6¸!Ò;Ú#(ð˜T×5Ñ5¸Ñ9Ó9Ü!Ÿ-™-¨×(@Ñ(@ÓA×AÑAñ Bð     Bð*ðEùô!òØ/°1Ñ4Ð/Ø2°aÒ7Ü8Ø0°(¸Aóðô8ûðúðBúsT‚AC+ÁB<Á)B:Á*B<Á8C+Â"C+Â0C)Â1    C+Â:B<Â<    C&ÃC!ÃC+Ã!C&Ã&C+rQrSs@rrUrU^s6ø„ñðB¨CðBÀUõBð¨4° Ñ+<ðÈ4÷r"rUcóB‡—eZdZdZdedefˆfd„ Zdeede    fd„Z
ˆxZ S)ÚHealthyAnyPolicyzT
    Policy that returns True if at least one health check probe is successful.
    r'r*có&•—t‰|||«yr<rBrDs   €rr:zHealthyAnyPolicy.__init__„rFr"r+rcƒózK—d}|D]ˆ}d}t|j«D]]}    |j|«ƒd{–—†rd}n?d}    ||jdz
ksŒ7t j |j«ƒd{–—†Œ_|s|s|cS|rŒ…|sŒˆ|‚|S7ŒZ#t$r}t    d||«}Yd}~Œld}~wwxYw7Œ>­w)NFTrHr6rI)rr+rÚ
is_healthyrNÚ    exceptionrOrPs        rr.zHealthyAnyPolicy.execute‡sÜèø€Øˆ
à)ò     ˆL؈Iä  ×!9Ñ!9Ó:ò Bð    Ø)×6Ñ6°xÓ@×@Ð@Ø%)˜
Ùà%*™
ð ˜T×5Ñ5¸Ñ9Ó9Ü!Ÿ-™-¨×(@Ñ(@ÓA×AÑAð Bñ¡iØ!Ò!Ú¢Iؐð+     ð.Ðð%Aùô
!òÜ :Ø,¨h¸ó!•Iûðúð Búsh‚"B;¥B¹BºBÁB;ÁBÁB;Á"B;Á:B9Á;B; B;ÂB;ÂB    B6 B1Â,B;Â1B6Â6B;rQrSs@rr[r[s6ø„ñðB¨CðBÀUõBð¨4° Ñ+<ðÈ4÷r"r[có—eZdZeZeZeZy)ÚHealthCheckPoliciesN)    rrr r@Ú HEALTHY_ALLrUÚHEALTHY_MAJORITYr[Ú HEALTHY_ANYrr"rrara¤s„Ø"€KØ,ÐØ"Kr"raÚDEFAULT_HEALTH_CHECK_POLICYcó—eZdZdZdefd„Zy)ÚPingHealthCheckz-
    Health check based on PING command.
    rcƒóK—t|jt«r#|jjd«ƒd{–—†S|jj    «}|D]'}|j
jd«ƒd{–—†rŒ'yy7ŒK7Œ ­w)NÚPINGFT)Ú
isinstanceÚclientr
Úexecute_commandÚ    get_nodesÚredis_connection)rrÚ    all_nodesÚnodes    rrzPingHealthCheck.check_health²s~èø€Ü h—o‘o¤uÔ -Ø!Ÿ™×8Ñ8¸Ó@×@Ð @ð!Ÿ™×1Ñ1Ó3ˆIØ!ò !Ø!×2Ñ2×BÑBÀ6ÓJ×JÑJÙ ð !ððAøð
Kús(‚9B »B¼AB Á=B    Á>B ÂB     B N)rrr r/r!rrr"rrgrg­s„ñð
¨dô
r"rgcó¦—eZdZdZdeeddddddddf dedededee    e
e
fd    e d
ee
d ee
d ee e
e fd ee
dee
dee
fd„Zde fd„Zy)ÚLagAwareHealthCheckz
    Health check available for Redis Enterprise deployments.
    Verify via REST API that the database is healthy based on different lags.
    iã$NTÚ rest_api_portÚlag_aware_toleranceÚtimeoutÚ
auth_basicÚ
verify_tlsÚca_fileÚca_pathÚca_dataÚclient_cert_fileÚclient_key_fileÚclient_key_passwordc óŒ—tt||tt«d¬«|||||    |
| ¬«
«|_||_||_y)a£
        Initialize LagAwareHealthCheck with the specified parameters.
 
        Args:
            rest_api_port: Port number for Redis Enterprise REST API (default: 9443)
            lag_aware_tolerance: Tolerance in lag between databases in MS (default: 100)
            timeout: Request timeout in seconds (default: DEFAULT_TIMEOUT)
            auth_basic: Tuple of (username, password) for basic authentication
            verify_tls: Whether to verify TLS certificates (default: True)
            ca_file: Path to CA certificate file for TLS verification
            ca_path: Path to CA certificates directory for TLS verification
            ca_data: CA certificate data as string or bytes
            client_cert_file: Path to client certificate file for mutual TLS
            client_key_file: Path to client private key file for mutual TLS
            client_key_password: Password for encrypted client private key
        r)Úretries)
rurvÚretryrwrxryrzr{r|r}N)r rrr Ú _http_clientÚ_rest_api_portÚ_lag_aware_tolerance) rrsrtrurvrwrxryrzr{r|r}s             rr:zLagAwareHealthCheck.__init__ÅsS€ô@3Ü ØØ%ÜœI›K°Ô3Ø%ØØØØ!1Ø /Ø$7ô ó 
ˆÔð,ˆÔØ$7ˆÕ!r"rcƒóÂK—|j€ td«‚t|jt«r|jj «d}n#|jj dj}|j›d|j›}||jj_
d}|jjd«ƒd{–—†D]+}|dD]!}|d|k(r|}Œ|dD] }||k(sŒ    |}Œ!Œ#Œ-|€ tjd    «td
«‚d |d ›d |j›}|jj|d¬«ƒd{–—†y7Œ7Œ­w)Nz[Database health check url is not set. Please check DatabaseConfig for the current database.Úhostrú:z/v1/bdbsÚ    endpointsÚdns_nameÚaddrz8LagAwareHealthCheck failed: Couldn't find a matching bdbzCould not find a matching bdbz    /v1/bdbs/Úuidz=/availability?extend_check=lag&availability_lag_tolerance_ms=F)Ú expect_jsonT)Úhealth_check_urlr7rjrkr
Úget_connection_kwargsÚ startup_nodesr…r‚rÚbase_urlÚgetÚloggerÚwarningrƒ)    rrÚdb_hostrÚ matching_bdbÚbdbÚendpointr‰Úurls             rrz LagAwareHealthCheck.check_healthösŠèø€Ø × $Ñ $Ð ,ÜØmóð ô h—o‘o¤uÔ -Ø—o‘o×;Ñ;Ó=¸fÑE‰Gà—o‘o×3Ñ3°AÑ6×;Ñ;ˆGà×/Ñ/Ð0°°$×2EÑ2EÐ1FÐGˆØ,4ˆ×Ñ× Ñ Ô)ðˆ Ø×*Ñ*×.Ñ.¨zÓ:×:ò
    ˆCØ  Ñ,ò     Ø˜JÑ'¨7Ò2Ø#&LÙð% VÑ,òDؘw“Ø'*˜ Ùññ      ð
    ð Ð Ü N‰NÐUÔ VÜÐ<Ó=Ð =𘠠UÑ+Ð,ð-?Ø?C×?XÑ?XÐ>Yð [ð     ð×Ñ×#Ñ# C°UÐ#Ó;×;Ð;ðð/;øð(    <ús+‚C    Eà Eà (EÃ5A EÅEÅEÅE)rrr r/ÚDEFAULT_LAG_AWARE_TOLERANCEr r1r2rrÚstrr!r    Úbytesr:rrr"rrrrr¿sׄñð"Ø#>Ø(Ø04Øà!%Ø!%Ø/3à*.Ø)-Ø-1ñ/8àð/8ð!ð/8ðð    /8ð
˜U 3¨ 8™_Ñ-ð /8ð ð /8ð˜#‘ð/8ð˜#‘ð/8ð˜%  U 
Ñ+Ñ,ð/8ð# 3™-ð/8ð" #™ð/8ð& c™]ó/8ðb'¨dô'r"rr),rLÚloggingÚabcrrÚenumrÚtypingrrrr    Ú redis.asyncior
Úredis.asyncio.http.http_clientr r Ú redis.backoffr Úredis.http.http_clientrÚredis.multidb.exceptionrÚ redis.retryrÚDEFAULT_HEALTH_CHECK_PROBESÚDEFAULT_HEALTH_CHECK_INTERVALÚDEFAULT_HEALTH_CHECK_DELAYr˜Ú    getLoggerrr‘rr$r4r@rUr[rarbreÚ__annotations__rgrrrr"rú<module>rªsÜðÜÛß#Ýß/Ó/åßRÝ#Ý-Ý>ÝàÐØ !ÐØ ÐØ"Ðà    ˆ×    Ñ    ˜8Ó    $€ô #ô ô ˜ô ô. Р1ô ô(Ð0ôô,Ð5ôôB"Ð0ô"ôJ#˜$ô#ð 4G×3RÑ3RÐÐ0ÓRôkôô$^˜+õ^r"