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
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
U
º1;eÖã@s¬ddlmZddlmZddlmZddlmZddlmZddl    m
Z
ddl m Z m Z mZddlmZdd    lmZdd
lmZd d lmZmZmZmZGd d„deƒZdS)é)Údatetime)ÚRequestTaskSetting)ÚSiteInfoRepository)ÚSiteDataRepository)ÚSiteLatestTimeRepository)ÚRequestTaskRepository)Ú    login_apiÚ site_info_apiÚ site_data_api)ÚLogUtils)ÚDataStatistics)ÚEnumSiteStatusé)ÚretryÚtime_phased_executionÚ get_min_timeÚget_request_durationc@s†eZdZdZdddœdd„Zedœdd    „Zd
d „Zee    dœd d „ƒZ
e e    dœdd„ƒZ e e    dœdd„ƒZ e e    dœdd„ƒZdd„ZdS)ÚJinShanRequestTasku$金山扬尘监测数据爬取任务FN)ÚreturncCs>||_d|_tƒ|_tƒ|_tƒ|_tƒ|_    t
ƒ|_ d|_ dS©N) ÚdebugÚ_configrÚ_rep_site_inforÚ_rep_site_datarÚ_rep_latest_timerÚ_rep_request_taskr Ú_data_statisticsÚ_site_latest_time_map)Úselfr©rú<E:\PycharmProject\fugitive_dust_new/src\task\request_task.pyÚ__init__szJinShanRequestTask.__init__)ÚconfigcCs
||_dSr)r)rr"rrr Ú
set_configszJinShanRequestTask.set_configcCs.|j ¡}i}|D]}|j||j<q||_dS)u!更新站点数据最新时刻表N)rZ    query_allÚ latest_timeÚmn_coder)rÚlÚmÚitemrrr Ú_update_site_latest_times
 
z+JinShanRequestTask._update_site_latest_timec    Ksætjdddt|tƒrN| |¡t d| d¡›d|d›d|d    ›¡nt d
|d›d|d    ›¡t ||jj    |jj
d |¡}|d kr’d S|j   |d ¡|  ¡|j  |d¡}|j  ||jd¡}|j |¡}|rât d¡|S)uQ
        èŽ·å–æŸä¸ªè®¾å¤‡æˆ–æŸä¸ªåœºæ™¯ç±»åž‹ä¸‹æŸä¸ªæ—¶æ®µçš„ç›‘æµ‹æ•°æ®ï¼Œå¹¶åšåŽç»­å¤„ç†
        Args:
            obj: {
                site: ç«™ç‚¹ç¼–号
                typeID: ç«™ç‚¹ç±»åž‹
            }
            **kwargs:{
                sTime: å¼€å§‹æ—¶é—´
                eTime: ç»“束时间
            }
 
        Úr©Úprefixu&分段 - ç›‘测数据获取 | ç«™ç‚¹: Úsiteu  | èµ·å§‹: ZsTimeu  | ç»“束: ZeTimeu&分段 - ç›‘测数据获取 | èµ·å§‹: u访问监测数据接口FÚTypeNameÚMNCodeÚLSTu@浓度数据写入完成, ç«™ç‚¹æœ€æ–°æ•°æ®æ—¶é—´æ›´æ–°æˆåŠŸ! )r ÚinfoÚ
isinstanceÚdictÚupdateÚgetr
Úfetch_dust_datarÚrequest_retry_timesÚrequest_fail_wait_secondsrZ count_by_typer)Z data_groupingZdata_deduplicationrrÚsave_site_info)rÚobjÚkwargsÚresZdata_mapZres2rrr Ú_task_get_data_by_section's 
 
, 
z,JinShanRequestTask._task_get_data_by_sectioncCst d¡t ¡S)u 登陆任务u尝试登陆...)r r1rÚlogin)rrrr Ú
task_loginYs
zJinShanRequestTask.task_logincCs.t d¡t ¡}|dkr&|j |¡SdSdS)u!获取监测点基本信息任务u$尝试获取监测点基本信息...FN)r r1r    Zfetch_site_inforr9)rr<rrr Útask_get_site_info`s
 
 z%JinShanRequestTask.task_get_site_infoc    Cs`t d¡|j tjj¡}|j tjj¡}t dt|ƒ›¡|j    rHg}|D]f}t
|j tjƒ\}}|j   |j¡}|dkrzqL|j|||jjdd|jjd|jid}|dkrLdSqL|j ¡t d    t|ƒ›¡t|ƒ}t
|tjƒ\}}|j    r,td
d d d ddƒ}td
d d d ddƒ}t     d|›d|›¡| |||jj|jj¡}|dkrRdS|j ¡dS)u-
        èŽ·å–ç›‘æµ‹ç‚¹æ•°æ®ä»»åŠ¡
        u尝试获取监测点数据...u当前停运设备数Néér-)r:Fu当前上线设备数içé
éé ru9调试模式 - ä¸Šçº¿è®¾å¤‡æ•°æ®èŽ·å–æ—¶æ®µå˜æ›´ä¸ºï¼šz - T)r r1rZquery_by_site_statusr ZOnlineÚvalueZStopÚlenrrr$rZquery_by_mncoder%r=rÚrequest_range_hourÚrequest_range_interval_secondsÚidZrefresh_site_statusrr)    rZ online_listZ    stop_listr(ÚstÚetZ    site_infoÚresultZ min_site_timerrr Útask_get_site_dataks<
ÿ
 
 
z%JinShanRequestTask.task_get_site_datac
Csà|j ¡}|t_d}z¢zjtƒtƒtjddd| |jj    |jj
d¡sRWW¢jdS|  |jj |jj d¡| |jj |jj d    ¡}Wn2tk
r²}zt d
|¡d}W5d}~XYnXW5tjddd|j ||¡dt_XdS) u执行数据爬取任务Fu(------------- ä»»åŠ¡ç»“æŸ -------------rr+Nu(------------- ä»»åС开吝 -------------u登录u获取站点基本信息u获取站点监测数据u'任务中断,发生未处理异常:)rÚ create_taskr Útask_idr1Z complete_taskÚprintr?rÚlogin_retry_timesÚlogin_fail_wait_secondsr@r7r8rNÚ    ExceptionÚerror)rrPZ task_successÚerrr Údo_request_taskžs"
 
 z"JinShanRequestTask.do_request_task)F)Ú__name__Ú
__module__Ú __qualname__Ú__doc__r!rr#r)rÚboolr=rr?r@rNrWrrrr rs
1
2rN)rÚdb.models.tablesrZdb.repository.site_info_reprZdb.repository.site_data_reprZ"db.repository.site_latest_time_reprZdb.repository.request_task_reprÚapirr    r
Úutils.log_utilsr Zanalysis.data_statisticsr Úenumeration.enum_site_statusr Zrequest_task_proxyrrrrÚobjectrrrrr Ú<module>s