飞道的博客

我的 Serverless 实战 — 5分钟,教你用Serverless每天跟女朋友说1000遍土味情话!

323人阅读  评论(0)

本文正在参与 “100%有奖 | 我的Serverless 实战”征稿活动

活动链接:https://marketing.csdn.net/p/15940c87f66c68188cfe5228cf4a0c3f

 

目录

一、serverless简介

serverless架构

serverless三大应用场景

serverless的优势

二、python实现发送邮件

三、部署到腾讯云serverless,实现自动发送

四、效果展示

五、注意事项


一、serverless简介

serverless,顾名思义,即“无服务器”,提供一个微型的架构,用户不需要部署、配置或管理服务器服务,只需要专注于业务逻辑,代码运行所需要的服务器服务皆由云端平台来提供,因此运维成本很低。

serverless有一个非常出名的产品,就是亚马逊公司在2014年推出的AWS Lambda

  • serverless架构

主要包含两部分:BaasFaas,通常位于云端,使用时不需要关注最底层的服务器。

Baas(后端即服务:Backend as a Service)包括对象存储、云数据库、API网关、消息推送等。

Faas(函数即服务:Functions as a Service)对计算能力进行了抽象,可以在无需管理服务器的情况下响应事件。

  • serverless三大应用场景

场景一:事件触发场景,即有事件触发时才会执行。

场景二:流量突发场景,遇到突发大流量情况时,serverless架构下按需加载,弹性伸缩,节省资源,负载均衡。

场景三:大数据处理场景,用户只需要上传核心代码到函数计算,就可以快速完成整个工作。

  • serverless的优势

传统架构下,面对大流量场景,需要增加机器或者对机器升级,运维较为困难。面对高峰和低谷,无法做到按需使用,成本较高。

serverless架构下,开发者只需专注代码开发,无需在各个云资源控制台手动开通服务和配置管理,并能够根据业务请求自动进行弹性伸缩;支持用户按需付费,成本较低;开发周期快,很大程度上提升了开发、部署的效率。

具体可以查看这里的文档  https://www.serverless.com/cn/framework/docs/


二、python实现发送邮件


    
  1. import io
  2. import sys
  3. import time
  4. import datetime
  5. import random
  6. import requests
  7. from email.mime.text import MIMEText
  8. from email.header import Header
  9. import smtplib
  10. import logging
  11. logger = logging.getLogger()
  12. logger.setLevel(logging.INFO)
  13. mail_host = "smtp.qq.com"
  14. mail_user = "*********@qq.com" #此处填你的邮箱
  15. mail_girl = "*********@qq.com" #女朋友的邮箱
  16. mail_pass = "*************" #邮箱密码,默认POP3/SMTP服务是关闭的,需要在设置中开启查看
  17. name_gf = "***" #女朋友的名字
  18. mail_port = 465
  19. #sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf8')
  20. def getWeather():
  21. r = requests.get(
  22. 'http://wthrcdn.etouch.cn/weather_mini?city=%E5%8C%97%E4%BA%AC')
  23. if 'OK' in r.text:
  24. r = r.json()[ 'data']
  25. tip = r[ 'ganmao']
  26. temperature = r[ 'wendu']
  27. weather = r[ 'forecast'][ 0][ 'type']
  28. return f'天气:{weather} 当前温度:{temperature}\n{tip}'
  29. return '获取天气失败:('
  30. def getTime():
  31. today = datetime.datetime.now()+datetime.timedelta(hours=+ 8)
  32. t = today.timetuple()
  33. return f'今天是{t.tm_year}{t.tm_mon}{t.tm_mday}日 星期{t.tm_wday+1}'
  34. def getSoup():
  35. return{
  36. 0: '你知道你和星星有什么区别吗?星星在天上,你在我心里。',
  37. 1: '这是我的手背,这是我的脚背,你是我的宝贝。',
  38. 2: '莫文蔚的阴天,孙燕姿的雨天,周杰伦的晴天,都不如你和我聊天。',
  39. 3: '我觉得你好像一款游戏。什么游戏?我的世界。',
  40. 4: '你今天特别讨厌,讨人喜欢和百看不厌。',
  41. 5: '你上辈子一定是碳酸饮料吧,为什么我一看到你就能开心的冒泡。',
  42. 6: '我对你的爱,就像拖拉机上山,轰轰烈烈……',
  43. }.get(random.randint( 0, 6), 'false')
  44. def morning():
  45. return '\n'.join([getTime(), getSoup(), getWeather()])
  46. def night():
  47. return '\n'.join([getSoup(), f'晚安,{name_gf},梦里见!'])
  48. def getTimeX():
  49. t = int(time.strftime( "%H", time.localtime()))+ 8
  50. if t > 24:
  51. t = t -24
  52. return 'morning' if t < 11 else ( 'noon' if t < 17 else 'afterNoon')
  53. def main_handler(event, context):
  54. smtpObj = smtplib.SMTP_SSL(mail_host, mail_port)
  55. print( 'enter')
  56. try:
  57. smtpObj.login(mail_user, mail_pass)
  58. except smtplib.SMTPException as e:
  59. logger.info(e)
  60. return False
  61. content = night() if getTimeX() == 'afterNoon' else morning()
  62. message = MIMEText(content, 'plain', 'utf-8')
  63. message[ 'From'] = mail_user
  64. message[ 'To'] = mail_girl
  65. message[ 'Subject'] = f'早安,{name_gf}' if getTimeX() != 'afterNoon' else '晚安,{name_gf}'
  66. try:
  67. smtpObj.sendmail(mail_user, [mail_girl], message.as_string())
  68. logger.info( "发送成功")
  69. except smtplib.SMTPException as e:
  70. logger.info(e)
  71. logger.info( "发送失败")
  72. logger.info(content)
  73. return content

三、部署到腾讯云serverless,实现自动发送

1.注册腾讯云账号腾讯云 - 产业智变 云启未来 (tencent.com)

 

2.找到云函数的管理控制台->函数服务->新建->自定义创建

 

3.将函数代码粘贴到index.py中,单击完成。

4.点击部署,部署到腾讯云

5.找到触发管理,创建触发器,设置定时触发


四、效果展示

马上就要到520了,快用起来吧!


五、注意事项

同时发给多个人的时候,一定要注意创建一个新的函数。

为什么呢?

因为我在运行过程中出现了一个error,收到的邮件是这个样子

一堆“早安,小红”里面突然混进了一个“早安,小白”。

查看了一下日志,是一个超时错误。调用失败后自动运行了前一个调用成功的代码,而我发送的时候只改了女朋友的名字。。

(幸好是在测试的时候发现的,否则又将是一个翻车现场。


本文正在参与 “100%有奖 | 我的Serverless 实战”征稿活动

活动链接:https://marketing.csdn.net/p/15940c87f66c68188cfe5228cf4a0c3f


转载:https://blog.csdn.net/Liuyaoyun/article/details/116497400
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场