Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >实时日志:腾讯云 Serverless Python 运行时支持日志实时输出

实时日志:腾讯云 Serverless Python 运行时支持日志实时输出

作者头像
腾讯云serverless团队
发布于 2020-05-13 04:40:42
发布于 2020-05-13 04:40:42
1.1K00
代码可运行
举报
运行总次数:0
代码可运行

开发前言

作为一名 Serverless 架构的重度使用者,我一直对调试感到恐慌:经常在测试接口的时候,会通过网页/PostMan 触发函数,然后没得到预期的结果,我就只能傻乎乎的一直点控制台的日志,等待他能早点出来结果,看看为啥和我预期结果不同。

虽然说 10S,20S 的日志输出还能接受,但是在调试过程中,真的就是噩梦,一直在想有什么方法可以实现实时日志,我触发函数,就马上能看到,无论是控制台/API 网关还是 COS 触发器,只要被触发,我就能实时看到日志,这将会对我写代码,调试产生重大,超级重大帮助,所以我开发了这个组件。

为了更加方便,清晰,直观,我这里做了个使用方法的教程:

使用方法教程:

说明

该模块用于实现云函数 SCF Python Runtime 的实时日志功能,通过该组件,您可以实时查看到函数输出的日志(包括 print 和 logging 等),本组件目前在测试阶段,欢迎测试提意见,目前不建议上业务。

准备

  • 安装 scflog
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
pip install scflog

安装时,可能需要 root 权限,否则可能无法使用。安装完成,可以执行 scflog -v 查看是否安装成功:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
scflog 0.1.1
  • 部署实时日志组件,新建项目,并且建立 serverless.yaml,内容:

组件部署

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
PythonLogs:
  component: '@gosls/tencent-pythonlogs'
  inputs:
    region: ap-guangzhou

这里的参数是您要将这个组件部署的区域。该组件可以复用,也就是说这个组件部署完成之后可以一直被使用。

通过 sls --debug 部署:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
DEBUG ─ Setting tags for function PythonRealTimeLogs_Cleanup
DEBUG ─ Creating trigger for function PythonRealTimeLogs_Cleanup
DEBUG ─ Deployed function PythonRealTimeLogs_Cleanup successful

PythonLogs:
    websocket: ws://service-laabz6zm-1256773370.gz.apigw.tencentcs.com/test/python_real_time_logs
    
    26s › PythonLogs › done

此时我们需要配置组件:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
scflog set -w ws://service-laabz6zm-1256773370.gz.apigw.tencentcs.com/test/python_real_time_logs

配置成功输出:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
DFOUNDERLIU-MB0:~ dfounderliu$ scflog set -w ws://service-laabz6zm-1256773370.gz.apigw.tencentcs.com/test/python_real_time_logs
设置成功
	websocket: ws://service-laabz6zm-1256773370.gz.apigw.tencentcs.com/test/python_real_time_logs
	region: ap-guangzhou
	namespace: default

通过 sls remove --debug 移除

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
DEBUG ─ Removing any previously deployed API. api-rzm1uzik
DEBUG ─ Removing any previously deployed API. api-07wq4u9a
DEBUG ─ Removing any previously deployed service. service-laabz6zm

6s › PythonLogs › done

项目中使用

在项目中使用该组件的方法很简单。

  • 创建一个文件夹,并进入

mkdir scflogs && cd scflogs

  • 初始化项目

scflog init

  • 创建 index.py 文件以及 serverless.yaml 文件:
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
vim index.py

内容是:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from logs import *
import time
import logging

def main_handler(event, context):
    print("event is: ", event)
    time.sleep(1)
    logging.debug("this is debug_msg")
    time.sleep(1)
    logging.info("this is info_msg")
    time.sleep(1)
    logging.warning("this is warning_msg")
    time.sleep(1)
    logging.error("this is error_msg")
    time.sleep(1)
    logging.critical("this is critical_msg")
    time.sleep(1)
    print("context is: ", event)
    return "hello world"
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
vim serverless.yaml

内容是:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Hello_World:
  component: "@serverless/tencent-scf"
  inputs:
    name: Hello_World
    codeUri: ./
    handler: index.main_handler
    runtime: Python3.6
    region: ap-guangzhou
    description: My Serverless Function
    memorySize: 64
    timeout: 20
    exclude:
      - .gitignore
      - .git/**
      - node_modules/**
      - .serverless
      - .env
    events:
      - apigw:
          name: serverless
          parameters:
            protocols:
              - http
            serviceName: serverless
            description: the serverless service
            environment: release
            endpoints:
              - path: /test
                method: ANY

通过 sls --debug 部署:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
DEBUG ─ Deployed function Hello_World successful

  Hello_World:
    Name:        Hello_World
    Runtime:     Python3.6
    Handler:     index.main_handler
    MemorySize:  64
    Timeout:     20
    Region:      ap-guangzhou
    Namespace:   default
    Description: My Serverless Function
    APIGateway:
      - serverless - http://service-89bjzrye-1256773370.gz.apigw.tencentcs.com/release

  30s › Hello_World › done

此时,我们配置了APIGW的触发器,地址是上面输出的地址 + endpoints中的path例如:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
http://service-89bjzrye-1256773370.gz.apigw.tencentcs.com/release/test

此时,我们可以打开实时日志:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
scflog logs -n Hello_World -r ap-guangzhou

此时会提醒我们实时日志开启成功:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
DFOUNDERLIU-MB0:~ dfounderliu$ scflog logs -n Hello_World -r ap-guangzhou
实时日志开启 ...

我们可以用浏览器通过刚才函数部署完成返回给我们的地址触发函数:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
实时日志开启 ...
[2020-03-04 16:36:08] :  ......}
[2020-03-04 16:36:09] :  DEBUG debug_msg
[2020-03-04 16:36:10] :  INFO info_msg
[2020-03-04 16:36:11] :  WARNING warning_msg
[2020-03-04 16:36:14] :  ERROR error_msg
[2020-03-04 16:36:14] :  CRITICAL critical_msg
[2020-03-04 16:36:16] :  context is: .......}
.......

至此,实现实时日志功能。

总结

至此,完成了 Python 语言的实时日志功能,根据测试来看,性能还算不错,也还算稳定。通过 3 个函数 + APIGW + COS + CAM 完成了一个实时日志功能,理论上也可以复用到 Nodejs 等 Runtime。

Serverless Framework 30 天试用计划

我们诚邀您来体验最便捷的 Serverless 开发和部署方式。在试用期内,相关联的产品及服务均提供免费资源和专业的技术支持,帮助您的业务快速、便捷地实现 Serverless!

详情可查阅:https://cloud.tencent.com/document/product/1154/38792

One More Thing

3 秒你能做什么?喝一口水,看一封邮件,还是 —— 部署一个完整的 Serverless 应用?

复制以下链接至 PC 浏览器访问:https://serverless.cloud.tencent.com/deploy/express

3 秒极速部署,立即体验史上最快的 Serverless  HTTP 实战开发!

传送门:

  • GitHub: github.com/serverless
  • 官网:serverless.com

点击阅读原文,访问 Serverless 中文网,您可以在最佳实践里体验更多关于 Serverless 应用的开发!

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-04-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 ServerlessCloudNative 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Serverless Framework 一键部署正式发布
立即使用新版本 Serverless Framework,只需一键扫码,便可快速新建和部署项目,还等什么,赶快加入体验吧~ 之前的版本中,我们只能通过 CLI 命令行的方式建立新项目及部署,需要了解 CLI,才能进行 serverless 应用部署,对很多小白用户不友好,有门槛,为此,我们推出一键部署的功能,极大地方便了新手或者喜欢通过 UI 界面操作的用户, 同时也减少了操作失误的可能。 新版本的 Serverless Framework 目前支持 scf、express、website 三个模板的一键
腾讯云serverless团队
2020/04/26
1.6K0
Serverless 架构下如何实现日志的实时输出?
Serverless 白皮书中曾描述过 Serverless 的一些缺点,例如难以调试、冷启动严重等等。其中难以调试是表现在多个方面的,有一个方面是日志输出。
深度学习与Python
2020/08/07
8500
Serverless 实战:通过 Component 实现多地域部署容灾
单点故障是实际生产中无法避免的,单副本的存储方案也早已无法满足业务的可靠性要求。现在,我们通常都会做双机存储架构,会涉及到主备、主从、主主模式。
深度学习与Python
2020/08/02
6920
基于 Serverless 的人工智能相册小程序
日常生活中,我们常常会想要「搜索照片」。每当寻找很久远的照片时,记忆模糊,检索照片时只能想起大致的时间,然后一张张查看。这样不仅效率低下,还经常会漏掉我们想找的照片。 近几年微信小程序发展迅速,如果有这么一款软件,我们只需要用文字简单描述,就能实现图片的快速检索,岂不是很棒! 本项目将以小程序为例,在 Serverless 架构上进行开发。该小程序在保留相册基础功能(新建相册、删除相册、上传图片、查看图片、删除图片)上,增加人工智能搜索 —— 即用户上传图片之后,基于 Image Caption 技术,自
腾讯云serverless团队
2020/04/09
1.2K0
20 行代码:Serverless 架构下用 Python 轻松搞定图像分类
「图像分类」是人工智能领域的一个热门话题,我们在实际生活中甚至业务的生产环境里,也经常遇到图像分类相似的需求,如何能快速搭建一个图像分类或者内容识别的 API 呢? 我们考虑使用 Serverless Framework 将图像识别模块部署到腾讯云云函数 SCF 上。 这里我们会用到一个图像相关的库:ImageAI,官方给了一个简单的 demo: from imageai.Prediction import ImagePrediction import os execution_path = os.get
腾讯云serverless团队
2020/04/26
6650
又被限速,我决定用 Serverless 搭建一款私人网盘
Serverless 应用征集已经到第三天了,活动详情 《Serverless 有一百种玩法,比好玩更好玩》。 期间,我们收集到很多开发者的奇思妙想,比如 —— 三步搭建个人网盘,再也没有限速的烦恼! 想必,网盘限速的痛苦大家都体会过,这个问题除了充钱,其实就可以用 Serverless 来解决。 GitHub 上就有一个 OneManager 项目,能将 Onedrive 打造成为个人网盘。通过本文,你将学到如何通过 Serverless 进行部署,就三步,快试一试! 项目地址:https://gi
腾讯云serverless团队
2020/10/22
1.9K0
Serverless 实战:企业微信机器人还能这么玩?
通过定时触发器,可以非常简单快速地建立一个企业微信机器人。我们可以用它来实现喝水、吃饭提醒等小功能,还能实现定时推送新闻、天气,甚至是监控告警的小功能。 使用企业微信机器人 在企业微信中,可以选择添加机器人: 添加机器人之后,我们可以根据文档进行企业微信机器人的基础功能定制: 以下是用 curl 工具往群组推送文本消息的示例(注意要将 url 替换成你的机器人 webhook 地址,content 必须是 utf8 编码): curl '企业微信机器人地址' \ -H 'Content-Type
腾讯云serverless团队
2020/05/21
7.7K2
云函数 SCF 与对象存储实现 WordCount 算法
本文将尝试通过 MapReduce 模型实现一个简单的 WordCount 算法,区别于传统使用 Hadoop 等大数据框架,本文使用云函数 SCF 与对象存储 COS 来实现。 MapReduce 在维基百科中的解释如下: MapReduce 是 Google 提出的一个软件架构,用于大规模数据集(大于 1TB)的并行运算。概念「Map(映射)」和「Reduce(归纳)」,及他们的主要思想,都是从函数式编程语言借来的,还有从矢量编程语言借来的特性。 通过这段描述,我们知道,MapReduce 是面向大数
腾讯云serverless团队
2020/05/28
9320
基于腾讯云serverless框架部署静态网站附疫情地图部署示例
文件夹中创建对应的 serverless.yml 文件,并将静态页面放在code目录下
薛定喵君
2020/03/05
1.2K0
基于 Serverless Component 全栈解决方案(下)
上篇文章《基于 Serverless Component 的全栈解决方案(上)》 介绍了如何借助 Serverless Component 快速搭建 Restful API 后端服务 和 Vue.js + Parcel 的前端开发架构,但是最终部署后,腾讯云 COS 的访问 URL 并非自定义的,而且实际应用中,我们更偏向于使用自定义域名,同时静态文件一般都会通过 CDN 加速。那么如何为之前部署的静态网站配置 CDN 加速域名呢? 注意:在开始阅读本篇文章之前,你需要一个国内备案通过的域名,如果没有,那
腾讯云serverless团队
2020/03/20
1.2K0
Serverless Framework + OCR 快速搭建通用文字识别应用
在日常的工作生活中,文字识别与我们息息相关,比如身份证识别、随手拍扫描、纸质文档电子化等,无不显示着文字识别技术的重要性。为此,腾讯云通用文字识别产品 General OCR 应运而生,基于行业前沿的深度学习技术,支持将图片上的文字内容智能识别为可编辑的文本,大幅提升信息处理效率。而 Serverless Framework 与 OCR 的结合,则为用户提供了方便快捷、成本更低的通用文字识别应用部署方案。 为什么要用 Serverlesss Framework 来搭建,我们看看 Serverlesss F
腾讯云serverless团队
2020/06/01
3.1K0
Serverless实践系列(九):“灰常”简单的车牌识别 API 制作
本文的真正目的,其实并非要做一个完善的车牌识别工具,而是想要通过一些简单的 package 组合(包括深度学习框架等),实现一个简单的对外接口,用它来进行车牌识别。 这个项目的小难点在于 —— 如何打包依赖(包含需要 .so 的依赖)。 包含 .so 的依赖,通常是某些依赖需要编译一些文件(非纯 Python 实现的),此时,「稍有不慎」就会让我们无法执行代码。所以这个时候可以使自己的打包环境与云函数一致:CentOS + Python 3.6。 ---- 本地测试 编写代码: 执行结果: ---
腾讯云serverless团队
2019/09/18
1.4K1
Serverless实践系列(九):“灰常”简单的车牌识别 API 制作
通过 SCF Component 轻松构建 REST API,再也不用熬夜加班了
当一个应用需要对第三方提供服务接口时,REST API 无疑是目前最主流的选择。不过,如果自建 REST API,开发者需要购买虚拟机、配置环境等等,等一切都搞定,可能已经又是一个深夜。 而这些,都可以用 Serverless Framework 来解决。本教程将分享如何通过 Serverless SCF Component 、云函数 SCF 及 API 网关组件,快速构建一个 REST API ,并实现 GET/PUT 操作。 五步快速构建 REST API: 安装 配置 部署 测试 移除 1. 安
腾讯云serverless团队
2020/03/24
8360
【玩转腾讯云】使用 serverless 在腾讯云部署第一个函数
serverless 是各大云服务商提供出来的一种无服务的计算资源。为什么叫无服务呢,因为如果你使用 serverless,你只需要关注应用层,而无需关心底层基础设施,无需运维。简而言之,serverless 并不是真的无服务,而是关于有服务的不归你管,云服务商帮你搞定,比如 google,aws 或者 aliyun。
量子态的沐子呓
2020/04/18
1.1K0
【玩转腾讯云】使用 serverless 在腾讯云部署第一个函数
实验室站迁移 Serverless 之路(上)|社区精选文章
本文为 Serverless 社区成员撰稿。作者高晨远,研发工程师,熟悉 Python 开发,常写 Web 和爬虫,日常维护有个人博客和实验室两个站点。供稿请戳~ 0.前言 2月份,TencentServerless 举办了系列在线课堂分享,讲解了 Serverless 概念、架构、最佳实践以及如何开发一个 component 等技术知识。 因为对Serverless非常感兴趣,每次都参加了直播学习并提交了课堂作业,一路下来感觉还不错,因此决定把自己的实验室站(https://lab.yuangezh
腾讯云serverless团队
2020/03/18
1K0
Serverless 架构揭秘与静态网站部署实战(附实战源码)
Serverless被誉为下一代云计算技术,因为其能带来研发交付速度提升与成本的降低在业内异常火爆。本文主要为大家分享 Serverless Framework 的架构演进、技术解析以及应用发展,并通过 Serverless+Hexo 实战案例,分享如何快速基于 Serverless Framework 进行业务开发部署。 文章整理自Serverless Framework 社区专家陈涛在腾讯云大学的视频分享,完整分享视频如下,感兴趣的读者也可以点击文末【阅读原文】下载讲师PDF。 文章大纲: 1、Ser
腾讯云serverless团队
2020/03/02
1K0
Serverless 架构揭秘与静态网站部署实战(附实战源码)
通过 Serverless Components Koa 构建后台服务
Serverless Components 是支持多个云资源编排和组织的场景化解决方案,主要基于客户的具体场景,如 Express 框架支持、网站部署等。Serverless Components 可以有效简化云资源的配置和管理,将网关、COS 和 CAM 等产品联动起来,让客户更多关注场景和业务。
lqmeta
2020/07/06
1.1K0
通过 Serverless Components Koa 构建后台服务
腾讯云 Severless-Express 项目开发和灰度发布最佳实践
Serverless 应用基本概念 一个 Serverless 应用是由单个或者多个组件实例构成的。每个组件中都会有一个 serverless.yml 文件,该文件定义了组件的一些参数,这些参数在部署时用于生成实例的信息。例如 region 参数,定义了资源的所在区。 组织是在 Serverless 应用上层的概念,主要是为了管理。例如,一个公司会有不同部门进行 Serverless 应用开发,设置不同组织名称,方便做后期的权限管理。 示例:开发一个 express 应用,最基本的是引入 express
腾讯云serverless团队
2020/08/13
1K0
Serverless 开发实战之Nodejs:三分钟开发新冠病毒疫情查询网
随着 Serverless 生态的不断成熟,越来越多开发者使用 Serverless 架构构建自己的业务,Serverless 的典型适用场景有哪些?怎样借助工具,更快更好的部署自己的 Serverless 应用?本次课程将带你深入了解这些 Serverless 的最佳实战应用。 文章整理自腾讯云高级产品经理丁坤方在腾讯云大学的视频分享,完整分享视频如下,感兴趣的读者也可以点击文末【阅读原文】下载讲师PDF。 本次分享大纲包括: 1、为什么 Serverless 广受开发者喜爱? 2、Serverle
腾讯云serverless团队
2020/03/03
1.5K0
Serverless 开发实战之Nodejs:三分钟开发新冠病毒疫情查询网
企业级 Serverless 应用实战
本文整理自 ServerlessDay · China 大会 - 《企业级 Serverless 应用实战》的分享,讲师为腾讯云 Serverless 高级产品经理方坤丁。 本文主要分为四个部分: Serverless 2020 : 趋势与挑战 Serverless 典型场景 部署企业级 Serverless 应用 实战演示 : Serverless SSR Serverless 2020 : 趋势与挑战 首先,谈一下对于 Serverless 在 2020 的趋势。我大概是从 3-4 年前开始接触 Se
腾讯云serverless团队
2020/07/09
1.9K1
推荐阅读
相关推荐
Serverless Framework 一键部署正式发布
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验