hyb
2026-01-09 4cb426cb3ae31e772a09d4ade5b2f0242aaeefa0
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
Ë
 
çúh)'ãóª—UddlZddlmZmZddlmZddlmZddlm    Z    m
Z
m Z m Z ddl mZddlmZddlmZmZdd    lmZdd
lmZd Zd Zd ZdZej8e«ZGd„de«ZGd„de«Z Gd„de «Z!Gd„de!«Z"Gd„de!«Z#Gd„de!«Z$Gd„de«Z%e%jLZ'e%e(d<Gd„de«Z)Gd „d!e«Z*y)"éN)ÚABCÚabstractmethod)ÚEnum)Úsleep)ÚListÚOptionalÚTupleÚUnion)ÚRedis)Ú    NoBackoff)ÚDEFAULT_TIMEOUTÚ
HttpClient)ÚUnhealthyDatabaseException)ÚRetryéégà?iˆcó"—eZdZedefd„«Zy)Ú HealthCheckÚreturncó—y)z(Function to determine the health status.N©)ÚselfÚdatabases  õlH:\项目\archive\测试组\脚本\Change_password\venv_build\Lib\site-packages\redis/multidb/healthcheck.pyÚ check_healthzHealthCheck.check_healthó€ð     óN)Ú__name__Ú
__module__Ú __qualname__rÚboolrrrrrrs„Øð ¨ò óñ rrcó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!ó€ð     rcó—y)z"Delay between health check probes.Nrr%s rÚhealth_check_delayz$HealthCheckPolicy.health_check_delay'r'rÚ health_checkscó—y)z8Execute health checks and return database health status.Nr©rr*rs   rÚexecutezHealthCheckPolicy.execute-rrN)rrr Ú__doc__ÚpropertyrÚintr&Úfloatr)rrr!r-rrrr#r#st„ñðØð  Sò óóð ðØð  Eò óóð ðð  T¨+Ñ%6ð ÀTò óñ rr#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__4s&€Ø  Ò "ÜÐIÓJÐ JØ$7ˆÔ!Ø#5ˆÕ rrcó—|jS©N)r7r%s rr&z-AbstractHealthCheckPolicy.health_check_probes:s€à×(Ñ(Ð(rcó—|jSr;)r8r%s rr)z,AbstractHealthCheckPolicy.health_check_delay>s€à×'Ñ'Ð'rr*có—yr;rr,s   rr-z!AbstractHealthCheckPolicy.executeBs€à rN)rrr r0r1r9r/r&r)rrrr!r-rrrr3r33sr„ð6¨Cð6ÀUó6ð ð) Sò)óð)ðð( Eò(óð(ðð  T¨+Ñ%6ð ÀTò óñ rr3có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;©Úsuperr9©rr&r)Ú    __class__s   €rr9zHealthyAllPolicy.__init__Lóø€Ü ‰ÑÐ,Ð.@ÕArr*rcóþ—|D]Z}t|j«D]@}    |j|«sy    ||jdz
ksŒ,t |j «ŒBŒ\y#t$r}t    d||«‚d}~wwxYw)NFúUnhealthy databaser5T©Úranger&rÚ    Exceptionrrr8)rr*rÚ health_checkÚattemptÚes      rr-zHealthyAllPolicy.executeOs”€Ø)ò        4ˆLÜ  ×!9Ñ!9Ó:ò 4ðXØ'×4Ñ4°XÔ>Ú$ð?ð
˜T×5Ñ5¸Ñ9Ó9ܘ$×2Ñ2Õ3ñ 4ð        4ðøô !òXÜ4Ð5IÈ8ÐUVÓWÐWûðXúsŸA!Á!    A<Á* A7Á7A<© rrr r.r0r1r9rrr!r-Ú __classcell__©rDs@rr?r?Gs6ø„ñðB¨CðBÀUõBð  T¨+Ñ%6ð ÀT÷ rr?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;rArCs   €rr9zHealthyMajorityPolicy.__init__brErr*rcó–—|D]—}|jdzdk(r|jdz }n|jdzdz }t|j«D]I}    |j|«s |dz}|dkry||jdz
ksŒ5t |j «ŒKŒ™y#t$r!}|dz}|dkr t    d||«‚Yd}~ŒRd}~wwxYw)Nérr5FrGT)r&rIrrJrrr8)rr*rrKÚallowed_unsuccessful_probesrLrMs       rr-zHealthyMajorityPolicy.executeesô€Ø)ò    4ˆLØ×'Ñ'¨!Ñ+¨qÒ0Ø.2×.FÑ.FÈÑ.JÑ+à/3×/GÑ/GÈ!Ñ/KÈqÑ.PÐ+ä  ×!9Ñ!9Ó:ò 4ð
Ø'×4Ñ4°XÔ>Ø3°qÑ8Ð3Ø6¸!Ò;Ú#(ð˜T×5Ñ5¸Ñ9Ó9ܘ$×2Ñ2Õ3ñ 4ð     4ð*øô!òØ/°1Ñ4Ð/Ø2°aÒ7Ü8Ø0°(¸Aóðô8ûðúsÁB    CÂ'CÃCrNrPs@rrRrR]s6ø„ñðB¨CðBÀUõBð T¨+Ñ%6ðÀT÷rrRcó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;rArCs   €rr9zHealthyAnyPolicy.__init__ƒrErr*rcó6—d}|D]n}d}t|j«D]C}    |j|«rd}n-d}    ||jdz
ksŒ/t |j «ŒE|s|s|cS|rŒk|sŒn|‚|S#t$r}t    d||«}Yd}~ŒXd}~wwxYw)NFTrGr5rH)rr*rÚ
is_healthyrKÚ    exceptionrLrMs        rr-zHealthyAnyPolicy.execute†sº€Øˆ
à)ò     ˆL؈Iä  ×!9Ñ!9Ó:ò 4ð    Ø#×0Ñ0°Ô:Ø%)˜
Ùà%*™
ð ˜T×5Ñ5¸Ñ9Ó9ܘ$×2Ñ2Õ3ð 4ñ¡iØ!Ò!Ú¢Iؐð+     ð.Ðøô!òÜ :Ø,¨h¸ó!•Iûðús£A8¸A8Á8    B BÂBrNrPs@rrXrX~s6ø„ñðB¨CðBÀUõBð T¨+Ñ%6ðÀT÷rrXcó—eZdZeZeZeZy)ÚHealthCheckPoliciesN)    rrr r?Ú HEALTHY_ALLrRÚHEALTHY_MAJORITYrXÚ HEALTHY_ANYrrrr^r^£s„Ø"€KØ,ÐØ"Krr^ÚDEFAULT_HEALTH_CHECK_POLICYcó—eZdZdZdefd„Zy)ÚPingHealthCheckz-
    Health check based on PING command.
    rcóê—t|jt«r|jjd«S|jj    «}|D]}|j
jd«rŒyy)NÚPINGFT)Ú
isinstanceÚclientr Úexecute_commandÚ    get_nodesÚredis_connection)rrÚ    all_nodesÚnodes    rrzPingHealthCheck.check_health±sd€Ü h—o‘o¤uÔ -Ø—?‘?×2Ñ2°6Ó:Ð :ð!Ÿ™×1Ñ1Ó3ˆIØ!ò !Ø×,Ñ,×<Ñ<¸VÕDÙ ð !ðrN)rrr r.r!rrrrrdrd¬s„ñð
¨ô
rrdcó¦—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 óz—t||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)
rrrsÚretryrtrurvrwrxryrzN)rrr Ú _http_clientÚ_rest_api_portÚ_lag_aware_tolerance) rrprqrrrsrtrurvrwrxryrzs             rr9zLagAwareHealthCheck.__init__ÄsK€ô@'ØØ!Üœ    › ¨QÔ/Ø!ØØØØ-Ø+Ø 3ô 
ˆÔð,ˆÔØ$7ˆÕ!rrcó~—|j€ td«‚t|jt«r|jj «d}n#|jj dj}|j›d|j›}||j_
d}|jjd«D]+}|dD]!}|d|k(r|}Œ|dD] }||k(sŒ    |}Œ!Œ#Œ-|€ tjd    «td
«‚d |d ›d |j›}|jj|d¬«y)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_urlr6rgrhr Úget_connection_kwargsÚ startup_nodesr‚rr~Úbase_urlÚgetÚloggerÚwarningr€)    rrÚdb_hostrŒÚ matching_bdbÚbdbÚendpointr†Úurls             rrz LagAwareHealthCheck.check_healthósl€Ø × $Ñ $Ð ,ÜØmóð ô h—o‘o¤uÔ -Ø—o‘o×;Ñ;Ó=¸fÑE‰Gà—o‘o×3Ñ3°AÑ6×;Ñ;ˆGà×/Ñ/Ð0°°$×2EÑ2EÐ1FÐGˆØ%-ˆ×ÑÔ"ðˆ Ø×$Ñ$×(Ñ(¨Ó4ò
    ˆCØ  Ñ,ò     Ø˜JÑ'¨7Ò2Ø#&LÙð% VÑ,òDؘw“Ø'*˜ Ùññ      ð
    ð Ð Ü N‰NÐUÔ VÜÐ<Ó=Ð =𘠠UÑ+Ð,ð-?Ø?C×?XÑ?XÐ>Yð [ð     ð     ×Ñ×јc¨uÐÔ5ðr)rrr r.ÚDEFAULT_LAG_AWARE_TOLERANCEr r0r1rr    Ústrr!r
Úbytesr9rrrrroro¾sׄñð"Ø#>Ø(Ø04Øà!%Ø!%Ø/3à*.Ø)-Ø-1ñ-8àð-8ð!ð-8ðð    -8ð
˜U 3¨ 8™_Ñ-ð -8ð ð -8ð˜#‘ð-8ð˜#‘ð-8ð˜%  U 
Ñ+Ñ,ð-8ð# 3™-ð-8ð" #™ð-8ð& c™]ó-8ð^'¨ô'rro)+ÚloggingÚabcrrÚenumrÚtimerÚtypingrrr    r
Úredisr Ú redis.backoffr Úredis.http.http_clientr rÚredis.multidb.exceptionrÚ redis.retryrÚDEFAULT_HEALTH_CHECK_PROBESÚDEFAULT_HEALTH_CHECK_INTERVALÚDEFAULT_HEALTH_CHECK_DELAYr•Ú    getLoggerrrŽrr#r3r?rRrXr^r_rbÚ__annotations__rdrorrrú<module>r§sÙðÜß#ÝÝß/Ó/åÝ#ß>Ý>ÝàÐØ !ÐØ ÐØ"Ðà    ˆ×    Ñ    ˜8Ó    $€ô #ô ô ˜ô ô. Р1ô ô(Ð0ôô,Ð5ôôB"Ð0ô"ôJ#˜$ô#ð 4G×3RÑ3RÐÐ0ÓRôkôô$\˜+õ\r