2 分钟,教你用 Serverless 每天给女朋友自动发土味情话

news2025/7/22 9:25:09

作者:安可

Serverless 简介

Serverless,中文意思是 “无服务器”,所谓的无服务器并非是说不需要依靠服务器等资源,而是说开发者再也不用过多考虑服务器的问题,可以更专注在产品代码上,同时计算资源也开始作为服务出现,而不是作为服务器的概念出现。

Serverless 架构

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

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

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

Serverless 三大应用场景

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

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

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

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='xxxxxxx@qq.com',   # 如过用的是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=['xxxxxxxxx@qq.com'],
        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->函数计算

在这里插入图片描述

3.进入控制台->服务及函数->创建函数

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.上传代码->上传文件夹->选择文件夹->保存并部署

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5.函数配置->编辑环境信息->修改函数入口

在这里插入图片描述
在这里插入图片描述

6.添加触发器,实现每日定时发送

触发器管理->创建触发器->定时触发器->填写名称和指定时间

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

7. 导入依赖并部署

先在终端执行以下三条命令,导入项目所需要的依赖:

pip3 install yagmail -t .
pip3 install schedule -t .
pip3 install bs4 -t .

在这里插入图片描述

点击右上角保存并部署:

在这里插入图片描述

最终效果展示

点击左上角测试函数,然后通过实时日志查看运行结果:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

总结

这次实战是对 Serverless 的一次深刻的理解,收获技术的同时也提升了自己的学习能力。

由于目前正在准备考研,就好久没有更新关于自学技术的文章,这回借着阿里云官方评测活动也去学一学火热的 Serverless 无服务架构的技术和思想,在这里分享这个当下流行的技术,然后结合着一些个人浅显的探索,希望能和大佬们共同学习成长!

戳此处,立即查看原文!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/7744.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如何根据自己的SCI论文,匹配适合的期刊? - 易智编译EaseEditing

如何选择合适的目标期刊是需要慎重对待的问题,它决定了你论文的发表速度和被认可度。 可以遵循以下几个步骤来考虑: 1、从你论文的参考文献中选择合适的期刊(如果引用文献较少,也可以从引文的参考文献中进行筛选)&…

成功解决:ModuleNotFoundError: No module named ‘amp_C‘

在使用transformers时,在调用Trainer的时候遇到了这个问题,原因是apex包有问题, 这里有解决apex安装包的多一些教程 https://blog.csdn.net/Xidian185/article/details/122745427 https://blog.csdn.net/weixin_45225975/article/details/119…

倍福TwinCAT3中使用久同伺服

目录 一、测试设备说明 二、伺服通电和参数设置 1、恢复出厂参数设置 2、恢复出厂,重启后 3、伺服自己点动操作 4、增益、刚度调整 5、伺服零位设定 6、伺服转动一圈编码器脉冲量设定 7、参数保存 三、伺服操作面板 四、TwinCAT3工程配置 1、XML文件 2、…

【元宇宙欧米说】打造艺术与技术构建的交互式数字旅程

Web3 to Earn项目如何扩大应用功能和场景?在Web3时代怎么才能以更新颖、有趣的方式追赶潮流?各Web3领域项目及应用如何进行功能外延以满足用户需求? 11月17日晚上九点,ZenCats项目管理员Fred将以“打造艺术与技术构建的交互式数字…

编码格式转换方法

今天项目上遇到了需要将 SJIS(Shift-JIS) 格式与 UTF8 格式相互转换问题。 首先看一个编码格式问题引发的乱码现象,新建下面的文本文档,然后更名为 test.bat。 echo off echo test chinese character view 测试中文字符显示 pause双击运行 用 chcp 查…

正版授权| iObit Uninstaller 12 Pro 专业卸载器工具

前言 专业的Win系统卸载程序,它可以轻松删除不需要的程序,插件和Windows应用程序,还可以对电脑旧的应用一键更新。安装监视器会检测并记录安装中的所有系统更改,以确保在将来彻底卸载时可以还原所有更改。 功能特点 安装监视器 …

1053 Path of Equal Weight

Given a non-empty tree with root R, and with weight Wi​ assigned to each tree node Ti​. The weight of a path from R to L is defined to be the sum of the weights of all the nodes along the path from R to any leaf node L. Now given any weighted tree, you a…

QT获取计算机硬件信息

一、项目介绍 本文介绍利用QProcess获取计算机的CPU、主板、硬盘等电脑相关硬件信息。 windows提供了“wmic”(Windows Management Instrumentation,Windows管理工具),提供了从命令行接口和批命令脚本执行系统管理的支持。可以打…

基于多个openEuler物理机执行mugen测试脚本

【原文链接】基于多个openEuler物理机执行mugen测试脚本 mugen脚本中有的脚本执行需要使用多个物理机,针对此场景,这里以需要两个物理机为例(用openEuler虚拟机模拟物理机) (1)首先安装两台openEuler虚拟…

【C++】C++基础知识(一)---基本概念

C基础知识&#xff08;一&#xff09;1. 输出“HelloWorld!”2. 添加注释3. 关键字4. 标识符5. 变量6. 常量1. 输出“HelloWorld!” 在visual studio中输出“HelloWorld!”。代码实现如下&#xff1a; #include <iostream> using namespace std;int main() {cout <&…

unity搭建xlua和emmy_lua的debug环境

配置步骤 1 环境 1.1 vscode 安装emmy_lua 1.2 安装对应的lua版本 1.3 安装java8并配置环境 1.4 emmy_lua的github上下载emmy_lua的64位版本&#xff0c;解压放到工程目录client\Tools\EmmyLua\ 下载地址&#xff1a;https://github.com/EmmyLua/EmmyLuaDebugger/release…

「Redis数据结构」动态字符串(SDS)

「Redis数据结构」动态字符串&#xff08;SDS&#xff09; 文章目录「Redis数据结构」动态字符串&#xff08;SDS&#xff09;[toc]一、前言二、概述三、C字符串与SDS的区别获取字符串长度复杂度杜绝缓冲区溢出减少修改字符串时的内存分配次数二进制安全兼容部分C字符串函数参考…

【PyTorch】Transforms基本使用

文章目录二、Transforms基本使用1、Transforms的结构及用法1.1 如何使用1.2 TensorBoard查看2、常用的Transforms2.1 ToTensor2.2 Normalize2.3 Resize2.4 Compose2.5 RandomCrop二、Transforms基本使用 Transforms主要是对特定格式的图片进行一些变化。 1、Transforms的结构及…

展锐UIS8310 CAT4物联网模块简介

1.简介 UIS8310是一个高度集成的应用处理器&#xff0c;支持TDD-LTE、FDD-LTE和WCDMA、GSM/GPRS/EDGE制式&#xff0c;并且支持LPDDR2。它的AP处理器是单核ARM CortexTM A7 1GHz&#xff0c;旨在为物联网提供经济高效、低功耗和高性能的解决方案。 UIS8310经过特别优化的架构可…

Servlet之RequestReponse 学习笔记

1 Request 1.1 Request继承关系 ServletRequest Java提供的请求对象根接口 HttpServletRequest Java提供的对Http协议封装的请求对象接口 RequestFacade Tomcat定义的实现类WebServlet("/demo2") public class Servlet2Demo extends HttpServlet {Overridep…

Vue 路由router的介绍以及使用方法

路由&#xff1a;简单来说类似于路由器&#xff0c;中转站。 1.理解: 一个路由&#xff08;route&#xff09;就是一组映射关系&#xff08;key - value&#xff09;&#xff0c;多个路由需要路由器&#xff08;router&#xff09;进行管理。 2.前端路由&#xff1a;key是路径&…

同源策略、跨域与JSONP

跨域与JSONP一、了解同源策略和跨域1.1 同源策略1.2 跨域二、JSONP2.1 什么是JSONP2.2 JSONP的实现原理2.3 自己实现一个简单的JSONP2.4 JSONP的缺点2.5 jQuery中的JSONP2.6 自定义参数及回调函数名称2.7 jQuery中JSONP的实现过程三、案例-淘宝搜索一、了解同源策略和跨域 1.1…

软考考完了,如何评职称?

很多考生以为软考初级、中级、高级资格考试通过了就是相应的职称了&#xff0c;然而并不是这样的&#xff0c;通过了软考考试只是相当于有了评职称的资格&#xff0c;并不是有了相应职称。 有了软考证书是可以申请评职称的&#xff0c;因为有了软考证书就有了评职称的资格哦&a…

【前端】flet:一款(即将)支持多语言开发的UI库

文章目录介绍开发生态支持语言运行体验组件API热更新开发计划 Roadmap2022 7月-8月安全手机端桌面端Controls(控件)核心功能用户指引&#xff08;User education&#xff09;2022 9月到12月手机端控件&#xff08;Controls&#xff09;编程语言支持核心功能介绍 Flet enables …

【云原生 | Kubernetes 系列】--Gitops持续交付 CD Push Pipeline实现

1. Tekton Trigger基础 Tekton Triggers简介 - 监控特定的事件,并在满足条件时自动触发Tekton PipelineTekton Triggers 为用户提供了一种声明式API 它允许用户按需定义监视的事件,并将其与特定的Pipeline连接,从而实例化出PipelineRun还允许将事件中的某些属性值信息注入到P…