基于阿里云Serverless函数计算开发的疫情数据统计推送机器人
一、Serverless函数计算
什么是Serverless?
在《Serverless Architectures》中对 Serverless 是这样子定义的:
Serverless was first used to describe applications that significantly or fully incorporate third-party, cloud-hosted applications and services, to manage server-side logic and state. These are typically “rich client” applications—think single-page web apps, or mobile apps—that use the vast ecosystem of cloud-accessible databases (e.g., Parse, Firebase), authentication services(e.g., Auth0, AWS Cognito), and so on. These types of services have been previously described as “(Mobile) Backend as a service", and I use “BaaS” as shorthand in the rest of this article. Serverless can also mean applications where server-side logic is still written by the application developer, but, unlike traditional architectures, it’s run in stateless compute containers that are event-triggered, ephemeral (may only last for one invocation), and fully managed by a third party. One way to think of this is “Functions as a Service” or “FaaS”.(Note: The original source for this name—a tweet by @marak—isno longer publicly available.) AWS Lambda is one of the most popular implementations of a Functions-as-a-Service platform at present, but there are many others, too.
这样的描述我相信有很多小伙伴不明白,我们可以这样子来理解Serverless:
它的中文直译就是【无服务器】
目前对于 Serverless 有几种解读方法:
- 在某些场景可以解读为一种软件系统架构方法,通常称为 Serverless 架构
- 而在另一些情况下,又可以代表一种产品形态,称为 Serverless 产品
可以理解为Severless=FAAS+BAAS 即函数即服务 (Function as a Service)+后端即服务 (Backend as a Service)
阿里云函数计算
阿里云函数计算是事件驱动的全托管计算服务。使用函数计算,您无需采购与管理服务器等基础设施,只需编写并上传代码。函数计算为您准备好计算资源,弹性地、可靠地运行任务,并提供日志查询、性能监控和报警等功能。
借助函数计算,您可以快速构建任何类型的应用和服务,并且只需为任务实际消耗的资源付费。
阿里云也为开发者朋友们提供了每月免费额度!
二、成果介绍
疫情数据统计推送基于Python和阿里云Serverless函数计算开发。实现了使用Python爬取获得疫情数据并进行整理,使用函数计算配合定时触发器,每天定时推送全国疫情数据到企业微信。
三、背景意义
疫情防控常态化,在全球疫情不断加速蔓延态势下在短期内完全结束是不可能的,很有可能较长时期处于疫情防控的状态,这要求我们时刻保持警惕,及时了解疫情情况。疫情数据统计推送项目,顺应了此背景。企业员工每天打开手机微信就可以收到一条简约的推送,了解当日的疫情情况。
四、优势和不足
优势:相对各大媒体每日推送的疫情情况相比,此疫情数据统计推送更加简介,可以更快的获取到有效信息。使用了阿里云函数FC开发,维护方便,无需关注服务器等基础设施,可以根据企业微信推送的需求量自动扩缩容,而且成本极低。使用定时触发器,每天定时的触发程序,发送数据推送,无需人为干预。
不足:文字单调,将在后期推出数据可视化版本。
五、作品展示
项目代码:
import requests,random,json
url = "https://c.m.163.com/ug/api/wuhan/app/data/list-total"
def UserAgent(): #随机获取请求头
user_agent_list = ['Mozilla/5.0 (Windows NT 6.2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1464.0 Safari/537.36',
'Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.16 Safari/537.36',
'Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.3319.102 Safari/537.36',
'Mozilla/5.0 (X11; CrOS i686 3912.101.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.116 Safari/537.36',
'Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.93 Safari/537.36',
'Mozilla/5.0 (Windows NT 6.2; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1667.0 Safari/537.36',
'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:17.0) Gecko/20100101 Firefox/17.0.6',
'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1468.0 Safari/537.36',
'Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2224.3 Safari/537.36',
'Mozilla/5.0 (X11; CrOS i686 3912.101.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.116 Safari/537.36']
UserAgent={'User-Agent': random.choice(user_agent_list)}
return UserAgent
def Get(arg1,arg2): #获取疫情
url_json = requests.get(url=url,headers=UserAgent()).json()
today_confirm = str(url_json['data']['chinaTotal']['today']['confirm'])#全国累计确诊较昨日新增
today_input =str(url_json['data']['chinaTotal']['today']['input'])#全国较昨日新增境外输入
today_storeConfirm = str(url_json['data']['chinaTotal']['today']['storeConfirm'])#全国现有确诊较昨日
today_dead =str(url_json['data']['chinaTotal']['today']['dead'])#累计死亡较昨日新增
today_heal = str(url_json['data']['chinaTotal']['today']['heal'])#累计治愈较昨日新增
today_incrNoSymptom = str(url_json['data']['chinaTotal']['extData']['incrNoSymptom'])#无症状感染者较昨日
total_confirm = str(url_json['data']['chinaTotal']['total']['confirm']) # 全国累计确诊
total_input = str(url_json['data']['chinaTotal']['total']['input']) # 境外输入
total_dead = str(url_json['data']['chinaTotal']['total']['dead']) # 累计死亡
total_heal = str(url_json['data']['chinaTotal']['total']['heal']) # 累计治愈
total_storeConfirm = str(url_json['data']['chinaTotal']['total']['confirm'] - url_json['data']['chinaTotal']['total']['dead'] - url_json['data']['chinaTotal']['total']['heal']) # 全国现有确诊
total_noSymptom = str(url_json['data']['chinaTotal']['extData']['noSymptom'])#无症状感染者
lastUpdateTime = url_json['data']['lastUpdateTime']#截止时间
data ='-' * 6 +'全国疫情数据实时统计' + '-' * 5 + '\n统计截至时间:'+ lastUpdateTime +'\n' + '-' * 27 + '\n' + \
' 累计确诊:' + total_confirm + ' ; ' + '较昨日:' + today_confirm + \
'\n 现有确诊:' + total_storeConfirm + ' ; ' + '较昨日:' + today_storeConfirm + \
'\n 累计死亡:' + total_dead + ' ; ' + '较昨日:' + today_dead + \
'\n 累计治愈:' + total_heal + ' ; ' + '较昨日:' + today_heal + \
'\n 境外输入:' + total_input + ' ; ' + '较昨日:' + today_input + \
'\n 无症状感染者:' + total_noSymptom + ' ; ' + '较昨日:' + today_incrNoSymptom
print(data)
HtmlPuch_server(data)
def HtmlPuch_server(data):
url_wx = "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=3b4bd7fa-4063-477f-bbc6-0fe767c52fdf"
headers = {"Content-Type": "text/plain"}
push_data ={
"msgtype": "text",
"text": {
"content":data
}
}
html = requests.post(url_wx,headers=headers,json=push_data)
print(html.text)
使用阿里云函数计算FC服务:
使用定时触发器:
最终效果:
六、总结
通过Serverless我们不再需要关注务器等基础设施,只需编写并上传代码,只要为任务实际消耗的资源付费,每月的免费额度可以满足开发者的基本使用。现在函数计算FC为开发者提供一站式 Serverless 应用管理,从一键创建应用到快速体验。
更多内容关注 Serverless 微信公众号(ID:serverlessdevs),汇集 Serverless 技术最全内容,定期举办 Serverless 活动、直播,用户最佳实践。
基于阿里云Serverless函数计算开发的疫情数据统计推送机器人的更多相关文章
- 悠星网络基于阿里云分析型数据库PostgreSQL版的数据实践
说到“大数据”,当下这个词很火,各行各业涉及到数据的,目前都在提大数据,提数据仓库,数据挖掘或者机器学习,但同时另外一个热门的名词也很火,那就是“云”.越来越多的企业都在搭建属于自己的云平台,也有一些 ...
- 从零入门 Serverless | 函数计算如何粘合云服务,提供端到端解决方案
作者 | 西流 阿里云技术专家 导读:阿里云 Serverless 产品函数计算可以作为粘合剂,串联其他云服务提供端到端解决方案,从而简化编程模型,快速实现最上层的业务目标. 传统单体应用的拆解 首先 ...
- 从零入门 Serverless | 函数计算的开发与配置
导读:在本篇文章中,"基本概念"部分主要对函数计算最核心的概念进行详细介绍,包括服务.函数.触发器.版本.别名以及相关的配置:"开发流程"部分介绍了基于函数计算 ...
- 在阿里云容器服务上开发基于Docker的Spring Cloud微服务应用
本文为阿里云容器服务Spring Cloud应用开发系列文章的第一篇. 一.在阿里云容器服务上开发Spring Cloud微服务应用(本文) 二.部署Spring Cloud应用示例 三.服务发现 四 ...
- 中国唯一入选 Forrester 领导者象限,阿里云 Serverless 全球领先
3 月 26 日消息,权威咨询机构 Forrester 发布 2021 年第一季度 FaaS 平台评估报告,阿里云函数计算凭借在产品能力.安全性.战略愿景和市场规模等方面的优势脱颖而出,产品能力位列全 ...
- 专访阿里云 Serverless 负责人:无服务器不会让后端失业
2012 年,云基础设施服务提供商 Iron.io 的副总裁 Ken 谈到软件开发行业的未来,首次提出了 Serverless 的概念,为云中运行的应用程序描述了一种全新的系统体系架构.此后,以 AW ...
- 阿里云 Serverless 再升级,从体验上拉开差距
差距都在细节上. Serverless 要成就云计算的下一个 10 年,不仅需要在技术上持续精进,也需要在产品体验上精耕细作. 近日,阿里云 Serverless 再度升级,发布了一系列围绕产品体验方 ...
- 发评测赢好礼 | Serverless 函数计算征集令
随着云计算发展,云原生热度攀升,Serverless 架构崭露头角且发展势头迅猛.不仅被更多开发者所关注,市场占有率也逐年提高.阿里云函数计算(Function Compute)是一个事件驱动的全托管 ...
- 基于阿里云 DNS API 实现的 DDNS 工具
0.简要介绍 0.1 思路说明 AliDDNSNet 是基于 .NET Core 开发的动态 DNS 解析工具,借助于阿里云的 DNS API 来实现域名与动态 IP 的绑定功能.工具核心就是调用了阿 ...
- 阿里云 Serverless 应用引擎(SAE)发布 v1.2.0,支持一键启停、NAS 存储、小规格实例等实用特性
近日,阿里云 Serverless 应用引擎(SAE)发布 v1.2.0版本,新版本实现了以下新功能/新特性: 一键启停开发测试环境:企业开发测试环境一般晚上不常用,长期保有应用实例,闲置浪费很高.使 ...
随机推荐
- 一文带你掌握C语言的循环结构
C语言循环结构详解 在C语言中,循环结构是一种重要的控制结构,它允许我们重复执行一段代码,以达到特定的目的.循环结构可以帮助我们简化重复性的任务,提高代码的效率.本篇文章将深入探讨C语言中的循环结构, ...
- BI工具:让数据分析井然有序一望而知
BI(Business Intelligence)工具是一类专门用于数据分析和决策支持的软件工具. 它们能够将企业内部和外部的数据进行整合.处理和可视化,帮助用户从海量数据中获取有价值的见解和洞察,并 ...
- Java数组最常用操作方法(Arrays类)
最近在写代码的过程中发现我们很多地方都会处理数组,有时只是模糊的记得有API可以调用,每次都查文档很是费事儿,适当的总结希望提高开发速度 一.申明数组 数组的申明十分简单也十分的基础,注意第三种申明方 ...
- MNIST中文手写数字数据识别
MNIST中文手写数字数据识别 实验环境 python=3.7 torch==1.13.1+cu117 torchaudio==0.13.1+cu117 torchvision==0.14.1 数据描 ...
- Azure - 机器学习企业级服务概述与介绍
Azure 机器学习 - 为端到端机器学习生命周期使用企业级 AI 服务. 关注TechLead,分享AI全维度知识.作者拥有10+年互联网服务架构.AI产品研发经验.团队管理经验,同济本复旦硕,复旦 ...
- [NOI online22提高A] 丹钓战
题目描述 有 \(n\) 个二元组 \((a_i, b_i)\),编号为 1 到 n. 有一个初始为空的栈 SS,向其中加入元素 \((a_i, b_i)\) 时,先不断弹出栈顶元素直至栈空或栈顶元素 ...
- 13 HTTP传输大文件的方法
目录 如何在有限的带宽下高效快捷传输大文件? 数据压缩 分块传输 范围请求 多段数据 如何在有限的带宽下高效快捷传输大文件? 数据压缩 分块传输 范围请求 多段数据 数据压缩 思路:把大文件整体变小 ...
- 神奇的 SQL ,高级处理之 Window Functions → 打破我们的局限!
开心一刻 今天儿子跟老婆聊天 儿子:妈妈,我为什么没有两个爸爸呀 老婆:每个人都只有一个爸爸呀,你看谁有两个爸爸了 儿子一脸真诚的看着老婆:那你为什么就有两个爸爸呢 老婆一脸疑惑的望向儿子:我哪有两个 ...
- 华企盾DSC客户端连不上服务器(客户端在回收站)
解决方法:确保该计算机在CLIENT表recyclebin列中的值为False,最好把所有计算机都改成False,改好后重启DSC服务器,最后重新安装客户端. 或者将客户端从回收站移动到正常的工作组.
- Python——第五章:模块(Module)、自定义模块、第3方开源模块、包(Package)
什么是模块(Module)? 在计算机程序的开发过程中,随着程序代码越写越多,在一个文件里代码就会越来越长,越来越不容易维护. 为了编写可维护的代码,我们把很多代码按功能分组,分别放到不同的文件里,这 ...