基于阿里云 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,jsonurl = "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 UserAgentdef 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_incrNoSymptomprint(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 函数计算开发的疫情数据统计推送机器人相关推荐
- 悠星网络基于阿里云分析型数据库PostgreSQL版的数据实践
悠星网络基于阿里云分析型数据库PostgreSQL版的数据实践 说到"大数据",当下这个词很火,各行各业涉及到数据的,目前都在提大数据,提数据仓库,数据挖掘或者机器学习,但同时另外 ...
- 基于阿里云盘二次开发实现磁盘同步,双向同步
基于阿里云盘实现磁盘同步 最近也是研究了一下阿里云盘也是把网盘的各种协议,在python上实现了一遍,也是大概了解了一些阿里在某些方面是如何处理的,比如:如何避免网盘数据泄露.如何实现快传.大文件传输 ...
- 基于阿里云Serverless架构下函数计算的最新应用场景详解(二)
摘要: Serverless概念是近年来特别火的一个技术概念,基于这种架构能构建出很多应用场景,适合各行各业,只要对轻计算.高弹性.无状态等场景有诉求的用户都可以通过本文来普及一些基础概念,看看这些场 ...
- 【阿里云原生应用】使用阿里云FC函数计算完成阿里云CDN目录刷新
目录 需求背景 关于OSS静态网站托管 OSS静态网站托管之CDN缓存刷新问题 开始着手解决 CDN-刷新预热 预热刷新API SDK技术选型 基础流程 FC函数计算 创建函数 Python HTTP ...
- 消息已读未读的模型设计_阿里云技术专家分享:现代 IM 系统中消息推送和存储架构的实现...
前言 IM 全称是"Instant Messaging",中文名是即时通讯.在这个高度信息化的移动互联网时代,生活中 IM 类产品已经成为必备品,比较有名的如钉钉.微信.QQ 等以 ...
- 阿里云1+X-云计算开发与运维-中级(多选题)
多选题(82题) 1.某公司有多个系统部署在云上,所有资源均在同一个云账号下,权限管理混乱,经常出现操作错误的情况.现公司决定采用云服务提供商的访问控制服务,可以实现有效的用户身份管理和资源访问控制. ...
- 阿里云1+X-云计算开发与运维(单选题)
单选题(243题) 1.根据<互联网信息服务管理办法>以及<非经营性互联网信息服务备案管理办法>,国家对非经营性互联网信息服务实行备案制度,对经营性互联网信息服务实行许可制度. ...
- 阿里云1+X-云计算开发与运维-中级(判断题)
判断题(86题) 1.通过弹性伸缩服务自动创建的云服务器实例不使用自定义镜像中的密码,因此,为了保证安全性,建议用户为伸缩配置指定SSH密钥对. 正确 2.某专有网络类型的云服务器实例被调整了其能够加 ...
- 阿里云HBase Ganos上线 助力时空大数据应用
随着全球卫星导航定位系统.传感网.移动互联网.IoT等技术的快速发展,越来越多的终端设备连接至网络,由此产生了大规模的时空位置信息,如车辆轨迹.个人轨迹.群体活动.可穿戴设备时空位置等.这些数据具有动 ...
最新文章
- Python工具 | 4个好用的开源 Python 下载器
- 06-密码学基础-混合密码系统
- 看看如何解决“SQL Server只能使用Windows身份登录,不能使用sa等Sql server身份进行登录”的问题...
- IOS给任意UIView截屏
- linux下git修改密码后无法使用,git push后账号密码输出错误和修改
- 打开 谷歌浏览器exe_python使用selenium调用谷歌浏览器打开指定网页
- java获取数组穷举_请教一下两个数组各取一个元素生成新的数组的穷举算法设计?...
- Spark和机器学习整合
- 三十五岁后,如何自学WEB前端编程
- 用户控件事件使用delegate
- jquery-演练-表格的模态框新增与点击删除功能
- 中兴通讯午后复牌:A股涨停 港股盘中涨逾53%
- C++中,类如果包含map/list等对象,慎用memset(0)
- C#+.Net使用RemObjects建立客户端服务端
- 1817735-45-7,Carboxy-PEG2-sulfonic acid在EDC和HATU等活化剂存在下,末端羧酸可参与与伯胺的反应
- 新年里真挚的情怀共祝愿南阳好
- pyscripter与python的关系_【已解决】PyScripter启动出错:Python could not be properly initialized. We must quit....
- 聘大佬、秀技术、搞开源,开发者说:小米「很技术」
- 这些渐行渐远的友情,你有过吗?
- java中0是真是假_为什么0为假?
热门文章
- Python 3 内置函数 tuple( )
- SAP ABAP——数据类型(一)【数据类型概要及分类】
- 解决[FireDAC][DatS]-32. Variable length column [Name] overflow. Value length - [26], column maximum le
- java事务占用内存吗,如何排查java应用中CPU使用率高或内存占用高的问题
- 无论是开放外链,或是回归实体,不同的互联网平台之间的高墙正在被推倒
- python空气质量指数计算_现在,哪个城市的空气最好闻?空气质量指数分布图——Python实例...
- python pandas stack_10分钟上手 Python pandas
- 【ICDE 2022】阿里发布稀疏模型训练框架HybridBackend,单位成本下训练吞吐提升至5倍
- YOJ3509-小豪搬宝藏
- github东西无法下载_下载GitHub上文件的两种方法