久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

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

180次閱讀
沒有評論

共計(jì) 8121 個(gè)字符,預(yù)計(jì)需要花費(fèi) 21 分鐘才能閱讀完成。

基于 Serverless + 企業(yè)微信如何打造 nCoV 疫情監(jiān)控小助手,很多新手對此不是很清楚,為了幫助大家解決這個(gè)難題,下面丸趣 TV 小編將為大家詳細(xì)講解,有這方面需求的人可以來學(xué)習(xí)下,希望你能有所收獲。

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

實(shí)現(xiàn)效果

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

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

核心邏輯

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

?php
function 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)控告警機(jī)器人
$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  運(yùn)行成功  
?

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

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

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

安裝 Serverless 框架

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

$ npm install -g serverless

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

$ mkdir nCov-function
$ cd nCov-function

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

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

配置 Yml 文件

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

# serverless.yml
myFunction:
 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ù)運(yùn)行地域
 description: My Serverless nCoV Function.
 memorySize: 128 // 運(yùn)行內(nèi)存
 timeout: 20 // 超時(shí)時(shí)間
 exclude:
 - .gitignore
 - .git/**
 - node_modules/**
 - .serverless
 - .env
 include:
 - ./nCoVFunction.zip
 environment:
 variables:
 TEST: vale
 vpcConfig:
 subnetId:  
 vpcId:  
 events:
 - timer: //  定時(shí)觸發(fā)器
 name: timer
 parameters:
 cronExpression:  0 0 10,21 * * * *  // 明天早上 10 點(diǎn),晚上 21 點(diǎn)
 enable: true

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

部署到云端

通過 sls 命令(serverless 的縮寫)進(jìn)行部署,并可以添加 –debug 參數(shù)查看部署過程中的信息:

taborchen$ sls --debug
 DEBUG ─ Resolving the template s static variables.
 DEBUG ─ Collecting components from the template.
 DEBUG ─ Downloading any NPM components found in the template.
 DEBUG ─ Analyzing the template s components dependencies.
 DEBUG ─ Creating the template s components graph.
 DEBUG ─ Syncing template state.
 DEBUG ─ Executing the template s components graph.
 DEBUG ─ Compressing function nCoVFunction file to /Users/taborchen/Desktop/ 工作 /yiqing/.ser
verless/nCoVFunction.zip.
 DEBUG ─ Compressed function nCoVFunction file successful
 DEBUG ─ Uploading service package to cos[sls-cloudfunction-ap-shanghai-code]. sls-cloudfunc
tion-default-nCoVFunction-1580960644.zip
 DEBUG ─ Uploaded package successful /Users/taborchen/Desktop/ 工作 /yiqing/.serverless/nCoVFu
nction.zip
 DEBUG ─ Creating function nCoVFunction
 DEBUG ─ Created function nCoVFunction successful
 DEBUG ─ Setting tags for function nCoVFunction
 DEBUG ─ Creating trigger for function nCoVFunction
 DEBUG ─ Created timer trigger timer for function nCoVFunction success.
 DEBUG ─ Deployed function nCoVFunction successful

運(yùn)行結(jié)果如下:

這樣,我們就完成了一個(gè) nCoV 的在線觸發(fā)函數(shù)機(jī)器人。

看完上述內(nèi)容是否對您有幫助呢?如果還想對相關(guān)知識有進(jìn)一步的了解或閱讀更多相關(guān)文章,請關(guān)注丸趣 TV 行業(yè)資訊頻道,感謝您對丸趣 TV 的支持。

正文完
 
丸趣
版權(quán)聲明:本站原創(chuàng)文章,由 丸趣 2023-08-16發(fā)表,共計(jì)8121字。
轉(zhuǎn)載說明:除特殊說明外本站除技術(shù)相關(guān)以外文章皆由網(wǎng)絡(luò)搜集發(fā)布,轉(zhuǎn)載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 彭山县| 称多县| 平顺县| 宁武县| 荆门市| 滨海县| 普兰县| 彰化县| 固阳县| 汶上县| 共和县| 邹城市| 苍梧县| 荥阳市| 含山县| 抚松县| 开平市| 长治县| 鸡东县| 武威市| 武山县| 武胜县| 新疆| 金华市| 图木舒克市| 会理县| 韩城市| 大同县| 镶黄旗| 霍州市| 和林格尔县| 梅州市| 庆元县| 承德县| 阿图什市| 天峨县| 无为县| 沙湾县| 莲花县| 浮山县| 兖州市|