原文鏈接:https://developer.aliyun.com/article/981268
演示視頻:https://developer.aliyun.com/live/249772
一、Serverless簡介
Serverless,中文意思是“無服務器”,所謂的無服務器并非是說不需要依靠服務器等資源,而是說開發者再也不用過多考慮服務器的問題,可以更專注在產品代碼上,同時計算資源也開始作為服務出現,而不是作為服務器的概念出現,
1.Serverless架構
主要包含兩部分:Baas和Faas,通常位于云端,使用時不需要關注最底層的服務器,
Baas(后端即服務:Backend as a Service)包括物件存盤、云資料庫、API網關、訊息推送等,
Faas(函式即服務:Functions as a Service)對計算能力進行了抽象,可以在無需管理服務器的情況下回應事件,
2.Serverless三大應用場景
場景一:事件觸發場景,即有事件觸發時才會執行,
場景二:流量突發場景,遇到突發大流量情況時,Serverless架構下按需加載,彈性伸縮,節省資源,負載均衡,
場景三:大資料處理場景,用戶只需要上傳核心代碼到函式計算,就可以快速完成整個作業,
3.Serverless的優勢
傳統架構下,面對大流量場景,需要增加機器或者對機器升級,運維較為困難,面對高峰和低谷,無法做到按需使用,成本較高,
Serverless架構下,開發者只需專注代碼開發,無需在各個云資源控制臺手動開通服務和配置管理,并能夠根據業務請求自動進行彈性伸縮;支持用戶按需付費,成本較低;開發周期快,很大程度上提升了開發、部署的效率,
具體可以查看阿里云相關檔案 https://developer.aliyun.com/group/serverless
二、Python實作發送郵件
import requests
import yagmail # 此模塊用于發郵件
import schedule # 此模塊用于計劃任務
from bs4 import BeautifulSoup
import re
ran = 0
url = 'https://tianqi.2345.com/cixian1d/70177.htm' # 定義天氣預報的url
loveurl = 'https://www.guaze.com/juzi/23389.html' # 定義情話的url
def email():
global ran # 將ran變數宣告為全域變數
web = requests.get(url)
# print(web.text)
page = BeautifulSoup(web.text,"html.parser")
# print(ran)
# print(love[ran])
weather = page.find("div",class_="real-today")
# print(weather.text)
web2 = requests.get(loveurl)
web2.encoding = 'gb2312'
page = BeautifulSoup(web2.text, "html.parser")
div = page.find('div', class_="content")
div = str(div.text)
# print(div)
grep = re.compile(r"\d+、(.*)")
content = grep.findall(div)
# print(content)
# email函式內的內容是爬取天氣和情話的,具體的地址天氣你可以更換url
yag = yagmail.SMTP(
host='smtp.qq.com', user='[email protected]', # 如過用的是qq郵箱就寫smtp.qq.com,如果是163就寫smtp.163.com
password='xhaztrwpjffpbdhh', smtp_ssl=True # 授權碼在qq郵箱里開啟smtp就會生成一個
)
weather = [weather.text,"每日情話:",content[ran], # 定義發送內容
yagmail.inline(r"/.love.jpg") # 附件圖片,不發圖片可以刪掉
]
yag.send(
to=['[email protected]'],
subject='早鴨', # 郵件主題
contents=weather # 發送的內容為上面定義的weather,其中weather.text是天氣預報,content[ran]是情話
)
print("發送完成")
ran += 1
schedule.every().day.at("05:21").do(email) # 每天5點20分執行函式email0
#schedule.every(10).seconds.do(email) #每10秒執行一下函式email的內容,我這里用于測驗
while True:
schedule.run_pending()
三、部署到阿里云Serverless,實作自動發送
1.登錄到阿里云首頁

2.選擇產品->彈性計算->Serverless->函式計算FC

3.進入控制臺->服務及函式->創建函式





4.上傳代碼->上傳檔案夾->選擇檔案夾->保存并部署




5.函式配置->編輯環境資訊->修改函式入口


6.添加觸發器,實作每日定時發送
觸發器管理->創建觸發器->定時觸發器->填寫名稱和指定時間



7.匯入依賴并部署
先在終端執行以下三條命令,匯入專案所需要的依賴
pip3 install yagmail -t .
pip3 install schedule -t .
pip3 install bs4 -t .

點擊右上角保存并部署

四、效果展示
點擊左上角測驗函式,然后通過實時日志查看運行結果,




五、總結
這次實戰是對Serverless的一次深刻的理解,識訓技術的同時也提升了自己的學習能力,由于目前正在準備考研,就好久沒有更新關于自學技術的文章,這回借著阿里云官方評測活動也去學一學火熱的 Serverless 無服務架構的技術和思想,在這里分享這個當下流行的技術,然后結合著一些個人淺顯的探索,希望能和大佬們共同學習成長!????
更多內容關注 Serverless 微信公眾號(ID:serverlessdevs),匯集 Serverless 技術最全內容,定期舉辦 Serverless 活動、直播,用戶最佳實踐,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/502852.html
標籤:其他
