riku
2024-01-10 a9e8e27e0503552b7b2a99c821da732175d4f071
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
U
ìh8e¸ã@szddlZddlmZmZddlmZddlmZddlmZddl    m
Z
dd„Z d    d
„Z ed œd d „Z eedœdd„ZdS)éN)ÚdatetimeÚ    timedelta)ÚLogUtils)Ú    DateUtils)ÚEnumSiteStatus)ÚConfigcsd‡fdd„    }|S)u失败重试逻辑Ncsšd}d}||kr–|dkr–|dkr*ˆ|ƒ}n
ˆ||ƒ}|dkr‚|d}t |›d¡||kr”t d|›d||›¡t |¡qt |›d¡q–q|S)NFréu失败u 程序会在u&秒后再次尝试, å‰©ä½™å°è¯•次数u成功)rÚerrorÚtimeÚsleepÚinfo)ÚselfZ retry_timesÚ    wait_timeÚtagÚobjZsucessÚcount©Úfunc©úBE:\PycharmProject\fugitive_dust_new/src\task\request_task_proxy.pyÚinners
 
 zretry.<locals>.inner)Nr©rrrrrÚretry srcsdttttdœ‡fdd„ }|S)u分时段循环执行逻辑N)Ú
start_timeÚend_timeÚrangerc     sÄt |||¡}tƒtjdddt d|›d|›d|›d|›dt|ƒ›
¡|D]^}t |¡ˆ|||d    |d
d }|d kr”tjdddd S|d krRtjdddd SqRtjddddS)u
        Args:
            start_time: å¼€å§‹æ—¶é—´
            end_time: ç»“束时间
            range: æ—¶é—´åˆ†æ®µé—´éš”,单位小时
            wait_time: æ¯æ®µå¾ªçŽ¯æ‰§è¡Œé—´éš”ï¼Œå•ä½ç§’
            obj: è‡ªå®šä¹‰ä»»æ„ç±»åž‹é™„带参数
        z}-----------------------------------------------------------------------------------------------------------------------------é)Úprefixu åˆ†æ—¶æ®µä»»åС开始 | èµ·å§‹: u  | ç»“束: u  | å‘¨æœŸ: u小时 | ç­‰å¾…: u秒 | æ¬¡æ•°: rr)ÚsTimeÚeTimeÚbreakFN)rÚ
time_sliceÚprintrr Úlenr
r )    r rrrrrZ    time_listÚitemÚrrrrr(s
,
z$time_phased_execution.<locals>.inner)N)rÚintrrrrÚtime_phased_execution%sr')ÚreturncCsJt|ƒdkr,tƒjj}t ¡}|t|dSt|dd„d}|djSdS)u9获取站点数据最新时刻列表中的时间最小值r©ÚdayscSs|jS)N)Ú latest_time)ÚxrrrÚ<lambda>Mózget_min_time.<locals>.<lambda>)ÚkeyN)    r#rÚrequest_configÚfirst_request_offset_daysrÚ    today_0amrÚsortedr+)Zsite_time_listZ offset_daysÚtÚlrrrÚ get_min_timeDs  
r6)rÚ site_statuscCsVt ¡}|tjkr||fS|tjkrR|}t ||¡}|dkrJ|tdd}||fSdS)uD根据起始时间和设备状态, è®¡ç®—数据爬取的时段范围ér)N)rr2rÚOnlineÚStopÚ time_distancer)rr7ÚnowÚstÚ    diff_daysrrrÚget_request_durationQs
 
 r?)r
rrÚutils.log_utilsrÚutils.date_utilsrÚenumeration.enum_site_statusrÚ config.configrrr'r6r?rrrrÚ<module>s