【教程】初識云函數(shù),實現(xiàn)無需服務器的項目上云!
原文:https://xfxuezhang.blog.csdn.net/article/details/132241997
你是否也在憂愁,想把自己的項目放在云上跑,但又不想花大價錢購買云服務器?
云函數(shù)介紹
????????云函數(shù)(Serverless?Cloud?Function,SCF)的簡單理解就是:可以部署在云上的項目,但不需要特地購買服務器,并且可以通過“定時/url訪問”等特定方式觸發(fā)運行。這特別適合于既需要云環(huán)境,但又不需要為此大成本購買服務器的用戶。
????????比如,我只是希望能定時運行一個檢查專利狀態(tài)、自動簽到的腳本,也可能是想要運行一個flask?API網(wǎng)管,甚至你也可以用它來做自制軟件的網(wǎng)絡驗證。
使用示例
????????這里,我們就簡單介紹一個基于騰訊云函數(shù)的小應用:定時監(jiān)控專利狀態(tài)。部署流程都一樣,熟悉后你就嘗試可以從小應用擴展到大應用。
領(lǐng)取云函數(shù)資源
????????目前,騰訊向新用戶免費贈送了3個月的體驗版本,沒有云函數(shù)資源得同學可以趕緊薅起來!領(lǐng)取入口:免費云函數(shù)


腳本編寫
腳本的編寫與在本地開發(fā)的模式一模一樣,沒有任何區(qū)別。
1、先點擊“新建”云函數(shù):

2、這里官方也提供了很多例程給你直接嘗試:

3、不過我們是自己創(chuàng)建的話,就選右邊的“從頭開始”,并填寫好信息:

????????這里的“事件函數(shù)”和“web函數(shù)”就是你的觸發(fā)執(zhí)行方式,由于是定時執(zhí)行,所以這里選擇“事件函數(shù)”。如果你想通過訪問指定URL來觸發(fā)執(zhí)行(比如上傳圖片),那就選“web函數(shù)”。
????????“高級配置”這里是根據(jù)你代碼的需求來填,一般來說保持默認就行:

????????“觸發(fā)器配置”這里是讓我們設置定時信息:

????????注意,如果你前面選的是“web函數(shù)”,那這里的內(nèi)容就不一樣了,它就長這樣,也比較直觀好理解:

4、等待部署完成后,就可以開始編寫具體代碼了。IDE應該是vscode改的,是不是就跟你本地一模一樣:

????????如果寫完代碼,可以點“測試”跑一下,輸出內(nèi)容會顯示在右下角:

5、我們以這個專利狀態(tài)為例:SooPAT 專利搜索,它長這個樣子:

????????我們使用requests庫來請求這個url,再解析他的返回內(nèi)容即可。注意,這里的requests是第三方庫,這可如何安裝?
????????我們直接在IDE下方的“終端”執(zhí)行pip安裝即可,非常的方便:

????????那么,最后的代碼可以是這樣的:
# -*- coding: utf8 -*-
import requests
from lxml import etree
def main_handler(event, context):
url = 'http://www.soopat.com/Home/SipoLegal/202211296680'
html = requests.get(url)
root ?= etree.HTML(html.text)
date = root.xpath('//*[@id="PatentContentTable"]/tbody/tr[3]/td[2]/text()')[0].strip()
state = root.xpath('//*[@id="PatentContentTable"]/tbody/tr[5]/td[2]/text()')
state = ', '.join(state).strip()
content = '公告日: ' + date + '; 狀態(tài): ' + state
url = 'http://xfxuezhang.cn:9966/QQ/send/?target=1061700625&msg='+content
requests.get(url)
????????這段代碼實現(xiàn)了檢查專利狀態(tài),并將結(jié)果發(fā)送到指定的url。
6、確認代碼沒有問題后,點擊下方的“部署”,就可以讓代碼開始自動執(zhí)行了:

7、支持各種信息的監(jiān)控,方便合理的分配資源:

Serverless應用
????????如果說前面介紹的云函數(shù)是函數(shù)級別的上云,那Serverless應用就是框架級別的上云,它可以幫你創(chuàng)建指定框架下的環(huán)境,而不需要手動一點點搭建??梢钥吹?,新建界面它只提供了各種框架的選擇:

????????這種類型的,適合于比如你想做一個API網(wǎng)關(guān),或者一個具體地、完整地應用。我們以創(chuàng)建一個Flask網(wǎng)關(guān)來給大家做一個演示。
1、簡單填寫一下信息:

????????在“高級配置”這里,我們可以勾選一下“固定出口IP”這個選項,因為它是免費的,不用白不用!

2、它會自動拉取代碼并初始化環(huán)境,根據(jù)項目大小可能需要等待個5分鐘,默默等待它部署完成:

3、創(chuàng)建完成后,點擊這個“URL”就可以訪問到這個應用了,不過我們還沒有編寫代碼。我們回到“函數(shù)服務”這一欄,可以看到我們創(chuàng)建的flask應用,點進去:

????????跟前面步驟一樣,我們根據(jù)自己的需求編寫代碼,編寫完成后點擊“部署”。

總結(jié)
????????云函數(shù)真是的非常的方便,它幫助我們實現(xiàn)了項目的上云,又不需要花大價錢去買云服務器。而且還有一點,云函數(shù)的通信安全是由騰訊來保障,因此免去了在服務器上還需要考慮如何防止被入侵的煩惱。對于需求量不大的用戶簡直是方便的不要不要的。