• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      Webhook技術(shù)在氣象資料業(yè)務(wù)監(jiān)控中的運用

      2019-10-21 11:00:08施佳馳劉丹楓
      大眾科學·上旬 2019年9期

      施佳馳 劉丹楓

      摘 要:為保證各類氣象資料傳輸時效,湖南省級氣象業(yè)務(wù)系統(tǒng)須保持不間斷24 小時運行。當出現(xiàn)嚴重系統(tǒng)故障時,極大影響氣象資料傳輸?shù)耐暾耘c及時性。針對省級業(yè)務(wù)系統(tǒng)中存在的實際問題,采用Webhook技術(shù)開發(fā)氣象資料業(yè)務(wù)監(jiān)控系統(tǒng),通過企業(yè)微信群機器人消息推送功能及時通知運維值班人員,使其能在最短的時間內(nèi)獲取未正常上傳氣象資料的臺站號及聯(lián)系方式,從而提高氣象資料傳輸及時率。

      關(guān)鍵詞:Webhook,企業(yè)微信,資料監(jiān)控。

      1? 關(guān)鍵技術(shù)介紹

      1.1? Webhooks技術(shù)介紹

      Webhooks是一個api概念,是微服務(wù)api的使用范式之一,也被成為反向api,即:前端不主動發(fā)送請求,完全由后端推送。簡單來說,WebHook就是一個接收HTTP POST(或GET,PUT,DELETE)的URL。一個實現(xiàn)了WebHook的API提供商就是在當事件發(fā)生的時候會向這個配置好的URL發(fā)送一條信息。與請求-響應(yīng)式不同,使用WebHooks,可以實時接受到變化。對于第三方平臺驗權(quán)、登陸等 沒有前端界面做中轉(zhuǎn)的場景,或者強安全要求的場景等,適合用 Webhooks 做數(shù)據(jù)主動推送。Webhooks 是一種新的前后端交互方式。如果客戶端要長期監(jiān)聽某個任務(wù)的狀態(tài),按照正常的api調(diào)用的方式去做,那么必須不停得輪訓服務(wù)器來獲取當前狀態(tài);使用webhook則無需輪訓,通過API 可以確定是否發(fā)生了更改,如果更改了只需要等待服務(wù)器推送信息過來,然后客戶端更新就可以。

      1.2? 企業(yè)微信介紹

      即時通訊(Instant Messaging)是目前Internet上最為流行的通訊方式,各種各樣的即時通訊軟件如雨后春筍般,不斷涌現(xiàn),服務(wù)提供商也提供了越來越豐富的通訊服務(wù)功能。通信技術(shù)的蓬勃發(fā)展,層出不窮的即時通訊軟件,也為氣象資料業(yè)務(wù)監(jiān)控帶來了更多的可能。

      微信是騰訊公司于2011年推出的一個為智能終端提供即時通訊服務(wù)的免費應(yīng)用程序。微信支持跨通信運營商、跨操作系統(tǒng)平臺通過網(wǎng)絡(luò)快速發(fā)送免費語音短信、視頻、圖片和文字。

      企業(yè)微信,是騰訊微信團隊為企業(yè)打造的高效辦公平臺。企業(yè)微信在發(fā)布2.8.7版本上線了“群機器人”功能:支持在內(nèi)部群聊中添加“群機器人”,通過配置可以讓機器人自動推送消息。管理員可以根據(jù)業(yè)務(wù)需求創(chuàng)建不同功能的“群機器人”,包括監(jiān)控告警、數(shù)據(jù)推送、自動回復等。同時,企業(yè)微信管理員可以查看和停用當前企業(yè)成員創(chuàng)建機器人,并管理成員創(chuàng)建機器人權(quán)限。本文使用企業(yè)微信群機器人進行消息推送。

      2? Webhook技術(shù)在氣象資料業(yè)務(wù)監(jiān)控中的運用

      2.1? 通過SSH方式監(jiān)控氣象資料

      paramiko是Python的一個庫,實現(xiàn)了SSHv2協(xié)議。安裝paramiko庫以后,可以在Python程序中直接使用SSH協(xié)議對遠程服務(wù)器進行執(zhí)行操作。paramiko有兩個核心組件,一個是SSHClient,另一個是SFTPClient。SSHClient的作用如同Linux里的SSH命令,可以對SSH會話進行封裝,該類封裝了傳輸(Transport)、通道(Channel),用于執(zhí)行遠程命令。SFTPClient的作用如同Linux里的sftp命令,可以對SFTP客戶端進行封裝,用于對遠程文件進行操作,例如對文件進行上傳、下載、修改權(quán)限等的操作。

      各個縣級氣象臺站正常上傳的氣象資料保存在省級Cimiss的/becs/workdir/coll/archive/的目錄下,本文編寫一個python腳本創(chuàng)建一個Threading進程,定時使用paramiko模塊通過ssh的方式訪問氣象資料保存目錄以獲取一個資料到達列表,使用正則表達式去除冗余信息獲得各個資料的上傳的臺站號,與正常上傳情況下的臺站號做數(shù)據(jù)匹配從而獲得未正常上傳的臺站號,實現(xiàn)對氣象資料的初步監(jiān)控。

      2.2? 創(chuàng)建企業(yè)微信群機器人,使用Webhook技術(shù)發(fā)送消息

      使用企業(yè)微信群機器人進行消息推送,首先獲取自定義機器人Webhook,在機器人管理頁面選擇添加機器人,輸入機器人名字并選擇要發(fā)送消息的群。創(chuàng)建成功后,即可獲得這個機器人對應(yīng)的Webhook地址。獲取到Webhook地址后,構(gòu)造post請求的data向這個Webhook發(fā)起HTTP、POST請求,即可實現(xiàn)給該群組發(fā)送消息。群機器人支持的消息類型及數(shù)據(jù)格式有:文本類型、markdown類型、圖片類型、圖文類型。群機器人消息發(fā)送頻率有頻率限制,即每個機器人發(fā)送的消息不能超過20條/分鐘。使用Webhook技術(shù)可將未正常上傳的臺站號以及臺站電話等相關(guān)信息發(fā)送消息至企業(yè)微信的相關(guān)群組。企業(yè)微信機器人消息推送成功如圖1所示。

      2.3? 使用pymysql將發(fā)送結(jié)果存入MySQL數(shù)據(jù)庫

      pymysql是在 Python3中用于連接 MySQL 服務(wù)器的一個純Python庫,Python2中是使用mysqldb。在python終端執(zhí)行命令:pip3 install pymysql,即可實現(xiàn)對pymysql庫的安裝。

      再使用Webhook技術(shù)將消息發(fā)送至企業(yè)微信的相關(guān)群組后,會返回一個狀態(tài)信息提示消息是否已經(jīng)發(fā)送成功。使用pymysql模塊將發(fā)送狀態(tài)等信息存入MySQL數(shù)據(jù)庫,存入的信息有:消息發(fā)送時間、未正常上傳的臺站號、臺站所屬地市、臺站電話等。后期可通過查詢數(shù)據(jù)庫獲悉程序運行情況及未正常上傳的臺站等的數(shù)據(jù)信息。

      3? 小結(jié)

      本文基于Python語言,采用Webhook技術(shù)開發(fā)氣象資料業(yè)務(wù)監(jiān)控系統(tǒng),在現(xiàn)有監(jiān)控系統(tǒng)的基礎(chǔ)上,通過企業(yè)微信群機器人消息推送功能及時通知運維值班人員,是對氣象信息業(yè)務(wù)告警技術(shù)的積極探索。

      汤阴县| 杭锦后旗| 南丹县| 翁源县| 无为县| 皮山县| 兰州市| 高台县| 肃北| 葫芦岛市| 盐城市| 临安市| 黑河市| 瑞昌市| 云梦县| 洱源县| 康定县| 安阳县| 辛集市| 鄂托克旗| 琼海市| 镇巴县| 广东省| 贺兰县| 宁陕县| 班玛县| 博白县| 镇雄县| 新安县| 商河县| 卢龙县| 揭阳市| 汝阳县| 南陵县| 河间市| 富顺县| 河津市| 崇左市| 丹棱县| 博野县| 阿巴嘎旗|