国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發(fā) > 綜合 > 正文

基于 Serverless +企業(yè)微信打造 nCoV 疫情監(jiān)控小助手

2024-07-21 02:03:14
字體:
供稿:網(wǎng)友

最近的一些疫情信息很讓人揪心,為了方便大家掌握疫情信息,在空閑之余做了一個關(guān)于 nCoV 的疫情監(jiān)控小助手。主要的功能是通過企業(yè)微信的 WebHook 來推送疫情信息。這里將使用 Serverless 的整體代碼思路和架構(gòu)方式分享給大家。本文作者:tabor

實現(xiàn)效果

我們想要實現(xiàn)的大致的效果是這樣的:

首先,我們需要解決的是數(shù)據(jù)來源問題,這里我們可以使用 python 爬蟲來做這件事情,但是由于個人比較懶所以直接用的 2019-nCoV-Crawler  ,這個項目已經(jīng)集成了現(xiàn)有的 API,所以我們直接調(diào)用即可。當然有能力的同學也可以自己部署 Python,我這邊是自己部署的,但是這不是本次的重點,就不在贅述。

現(xiàn)在,我們有了數(shù)據(jù),但是數(shù)據(jù)怎么打到服務(wù)器呢?又該如何觸發(fā)?當然使用 CVM 也是可以的,但是似乎太笨拙,并且消耗量很大,需要自己搭好所有環(huán)境。所以,這里我們選用 Serverless 方式來部署。

核心邏輯

我們來看看整體業(yè)務(wù)的代碼部分吧,畢竟這里是整個機器人的核心。我們來看代碼(請求三次接口):

<?phpfunction main_handler($event, $context) {// 廣東省情況$curlsz = curl_init();curl_setopt_array($curlsz, array( CURLOPT_URL => "https://lab.isaaclin.cn/nCoV/api/area?latest=0&province=%E5%B9%BF%E4%B8%9C%E7%9C%81", CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => "", CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 3000, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => "GET", CURLOPT_HTTPHEADER => array( "Accept: */*", "Cache-Control: no-cache", "Connection: keep-alive", "Host: lab.isaaclin.cn", "Postman-Token: 680e5ea7-5c2e-4fb6-9295-7e336f2252c6,abd73e01-2a60-42b5-9bbe-92aa83805a7e", "User-Agent: PostmanRuntime/7.15.0", "accept-encoding: gzip, deflate", "cache-control: no-cache" ),));$responsesz = curl_exec($curlsz);$echo_responsesz = json_decode($responsesz, true);$err = curl_error($curlsz);curl_close($curlsz);// 湖北省情況$curlhb = curl_init();curl_setopt_array($curlhb, array( CURLOPT_URL => "https://lab.isaaclin.cn/nCoV/api/area?latest=0&province=%E6%B9%96%E5%8C%97%E7%9C%81", CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => "", CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 3000, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => "GET", CURLOPT_HTTPHEADER => array( "Accept: */*", "Cache-Control: no-cache", "Connection: keep-alive", "Host: lab.isaaclin.cn", "Postman-Token: 680e5ea7-5c2e-4fb6-9295-7e336f2252c6,abd73e01-2a60-42b5-9bbe-92aa83805a7e", "User-Agent: PostmanRuntime/7.15.0", "accept-encoding: gzip, deflate", "cache-control: no-cache" ),));$responsehb = curl_exec($curlhb);$echo_responsehb = json_decode($responsehb, true);$err = curl_error($curlhb);curl_close($curlhb);// 全國總體情況$curlall = curl_init();curl_setopt_array($curlall, array( CURLOPT_URL => "https://lab.isaaclin.cn/nCoV/api/overall", CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => "", CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 3000, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => "GET", CURLOPT_HTTPHEADER => array( "Accept: */*", "Cache-Control: no-cache", "Connection: keep-alive", "Host: lab.isaaclin.cn", "Postman-Token: 680e5ea7-5c2e-4fb6-9295-7e336f2252c6,abd73e01-2a60-42b5-9bbe-92aa83805a7e", "User-Agent: PostmanRuntime/7.15.0", "accept-encoding: gzip, deflate", "cache-control: no-cache" ),));$responseall = curl_exec($curlall);$echo_responseall = json_decode($responseall, true);$err = curl_error($curlall);curl_close($curlall);//判斷是否為深圳地域(這里邏輯寫的比較簡單,但是夠用了)if ($echo_responsesz['results'][0]['cities'][0]['cityName'] == '深圳') { $echo_responseszqz = $echo_responsesz['results'][0]['cities'][0]['confirmedCount']; $echo_responseszys = $echo_responsesz['results'][0]['cities'][0]['suspectedCount']; $echo_responseszzy = $echo_responsesz['results'][0]['cities'][0]['curedCount']; $echo_responseszsw = $echo_responsesz['results'][0]['cities'][0]['deadCount'];} else { $echo_responseszqz = $echo_responsesz['results'][0]['cities'][1]['confirmedCount']; $echo_responseszys = $echo_responsesz['results'][0]['cities'][1]['suspectedCount']; $echo_responseszzy = $echo_responsesz['results'][0]['cities'][1]['curedCount']; $echo_responseszsw = $echo_responsesz['results'][0]['cities'][1]['deadCount'];}if ($err) { echo "cURL Error #:" . $err;} else {//疫情監(jiān)控告警機器人$sc = $sc=" **2019-nCoV 疫情信息同步:** /n> 全國疫情: > 確診人數(shù)<font color=/"info/">".$echo_responseall['results'][0]['confirmedCount']."</font>,疑似感染人數(shù)<font color=/"info/">".$echo_responseall['results'][0]['suspectedCount']."</font>,治愈人數(shù)<font color=/"info/">".$echo_responseall['results'][0]['curedCount']."</font>,死亡人數(shù)<font color=/"info/">".$echo_responseall['results'][0]['deadCount']."</font>/n> 廣東省: > 確診人數(shù)<font color=/"info/">".$echo_responsesz['results'][0]['confirmedCount']."</font>,疑似感染人數(shù)<font color=/"info/">".$echo_responsesz['results'][0]['suspectedCount']."</font>,治愈人數(shù)<font color=/"info/">".$echo_responsesz['results'][0]['curedCount']."</font>,死亡人數(shù)<font color=/"info/">".$echo_responsesz['results'][0]['deadCount']."</font>/n> 湖北省: > 確診人數(shù)<font color=/"info/">".$echo_responsehb['results'][0]['confirmedCount']."</font>,疑似感染人數(shù)<font color=/"info/">".$echo_responsehb['results'][0]['suspectedCount']."</font>,治愈人數(shù)<font color=/"info/">".$echo_responsehb['results'][0]['curedCount']."</font>,死亡人數(shù)<font color=/"info/">".$echo_responsehb['results'][0]['deadCount']."</font>/n> 深圳市: > 確診人數(shù)<font color=/"info/">".$echo_responseszqz."</font>,疑似感染人數(shù)<font color=/"info/">".$echo_responseszys."</font>,治愈人數(shù)<font color=/"info/">".$echo_responseszzy."</font>,死亡人數(shù)<font color=/"info/">".$echo_responseszsw."</font>/n> <font color=/"info/">".$echo_responseall['results'][0]['note1']."</font>> <font color=/"info/">".$echo_responseall['results'][0]['note2']."</font>> <font color=/"info/">".$echo_responseall['results'][0]['note3']."</font>> <font color=/"info/">".$echo_responseall['results'][0]['remark1']."</font>> <font color=/"info/">".$echo_responseall['results'][0]['remark2']."</font>> <font color=/"info/"> 信息出處:".$echo_responseall['results'][0]['generalRemark']."</font> /n>[更多數(shù)據(jù)請查看](https://news.qq.com/zt2020/page/feiyan.htm) /n";$post = array('msgtype' => 'markdown', 'markdown' => array('content' => $sc));$curl = curl_init();curl_setopt_array($curl, array( CURLOPT_URL => "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=", //這里的地址填寫為企業(yè)微信的HOOK路徑,https://work.weixin.qq.com/api/doc/90000/90136/91770 CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => "", CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 10, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => "POST", CURLOPT_POSTFIELDS => json_encode($post,JSON_UNESCAPED_UNICODE), CURLOPT_HTTPHEADER => array( "Cache-Control: no-cache", "Postman-Token: ab32082b-ce64-4832-b51f-8f2f1b3e98ef" ),));$response = curl_exec($curl);$err = curl_error($curl);curl_close($curl);return "運行成功"; }}?>

是不是很簡單呢?請求數(shù)據(jù),發(fā)送數(shù)據(jù)。

那么我們接下了重點看下如何將我們的業(yè)務(wù)代碼上傳到云端呢?
這里的云端我用的是騰訊云 Serverless 服務(wù) SCF云函數(shù) 。整個部署,使用過程都是免費的,對于開發(fā)者來講小項目使用的話免費額度是完全夠用的。無需擔心額外付費。

Serverless 部署,選用的是比較流行的 Serverless Framework,使用和部署也是完全免費的,那么下面我就來介紹下具體的部署過程吧。

安裝 Serverless 框架

首先,第一步,我們來安裝一個 Serverless Framework 的開發(fā)框架:

$ npm install -g serverless

然后,我們創(chuàng)建一個函數(shù)目錄:

$ mkdir nCov-function$ cd nCov-function

相關(guān)函數(shù)目錄的內(nèi)容如下:

|- code |- index.php // 這里就是上面的業(yè)務(wù)代碼存放位置|- serverless.yml //serverless 配置文件

配置 Yml 文件

接下來,是我們的重頭戲,配置函數(shù) yml 文件:

# serverless.ymlmyFunction: component: "@serverless/tencent-scf" //引用tencent-scf component inputs: name: nCoVFunction //函數(shù)名稱 enableRoleAuth: true codeUri: ./code //代碼本地存放位置 handler: index.main_handler runtime: Php5 region: ap-shanghai //函數(shù)運行地域 description: My Serverless nCoV Function. memorySize: 128 //運行內(nèi)存 timeout: 20 //超時時間 exclude: - .gitignore - .git/** - node_modules/** - .serverless - .env include: - ./nCoVFunction.zip environment: variables: TEST: vale vpcConfig: subnetId: '' vpcId: '' events: - timer: // 定時觸發(fā)器  name: timer  parameters:  cronExpression: '0 0 10,21 * * * *' //明天早上10點,晚上21點  enable: true

萬事具備,我們就可以直接部署 SLS 了。

部署到云端

通過 sls 命令(serverless 的縮寫)進行部署,并可以添加

主站蜘蛛池模板: 福安市| 米易县| 伊川县| 汶川县| 平南县| 兰溪市| 潞西市| 广灵县| 昆明市| 饶阳县| 阜城县| 陇川县| 三门峡市| 伊吾县| 新平| 项城市| 盐边县| 金门县| 祁门县| 抚顺市| 韶山市| 剑川县| 岫岩| 衡南县| 临沂市| 九龙县| 海晏县| 禄劝| 德保县| 沁水县| 元江| 长岛县| 山东省| 博客| 龙里县| 霍林郭勒市| 辉南县| 肥西县| 盐城市| 额济纳旗| 寻甸|