前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【Web Function】实践:Python 搭建轻量级二维码解析服务

【Web Function】实践:Python 搭建轻量级二维码解析服务

作者头像
腾讯云serverless团队
发布2021-07-29 16:10:14
6940
发布2021-07-29 16:10:14
举报

在平时的工作学习中,我们有时会遇到解析二维码内容的需求,碰到这种比较好玩的需求当然要用有意思的产品去实现了,刚好腾讯云推出了 Web Function 这种结合了 Serverless 与 Web 服务能力的产品,自然要去体验一番了。

本次就记录一下如何使用 Python Web Function 来实现一个简易二维码解析服务。

01.

实现思路

本次实验目的是希望 Web Function 可以接收一个二维码图片的网络地址,然后下载下来进行解析并将解析后的结果返回出去。这里主要借助 Python 的 zxing 这个库来做这个核心的解析功能。话不多说,程序的功能还是比较简单的,下面是参考代码:

代码语言:javascript
复制
import jsonimport zxingimport requestsimport osimport time
now = 'file'+str(time.time())
def main(event, context):
    # 默认图片    imgurl='http://cdn.xuedingmiao.com/qrcode_xuedingmiao.com.png'    params = json.dumps(event,sort_keys=True,indent=4)    param = json.loads(params)    if 'queryStringParameters' in param.keys():        param = param['queryStringParameters']
    if 'pic' in param.keys():        imgurl = param['url']     def download_img(img_url):        r = requests.get(img_url, headers={}, stream=True)        ctype = r.headers['Content-Type']        global fileName        fileName = now        if ctype.find('image') == -1:            return False        ctype = ctype[ctype.find('/')+1:]        typeDict = {            "jpeg": "jpeg",            "jpg": "jpg",            "png": "png",            "bmp": "bmp",            "gif": "gif"        }        global ext        ext = typeDict.get(ctype, 'png')        if r.status_code == 200:            open(os.getcwd() + '/baseimg-' + fileName + '.' + ext, 'wb').write(r.content)             return True        del r
    # 下载的二维码图片    ok = download_img(imgurl)    save_name = os.getcwd() + '/baseimg-' + fileName + '.' + ext
    if ok:        reader = zxing.BarCodeReader()        barcode = reader.decode(save_name)        return {            "isBase64Encoded": False,            "statusCode": 200,            "headers": {'Content-Type': 'application/json'},            "body": barcode.parsed        }

02.

Web 函数创建

1. 本地开发

代码可以参考上方示例,这里我们发现官方文档上面说 Python 3 云端运行时已经支持了一些库但是本次函数需要的并没包含,所以需要我们自己安装依赖库。

Python 运行时支持依赖打包上传及在线 IDE 安装两种依赖库安装方法,这里选择了本地将依赖安装好再进行打包上传。

2. 函数创建

登录 Serverless 云函数控制台,单击左侧导航栏的「函数服务」,选择自定义创建函数。

  • 云函数控制台地址:https://console.cloud.tencent.com/scf

函数类型选择「事件函数」就好了,地域随便选一个,部署方式使用代码部署,运行环境为Python 3.6。

接着函数代码我们使用本地上传 zip 包即可。 

3. 函数测试

上传完成之后可能会有一些 bug,我们只需要在 cloud studio 中在线调试即可。

03.

Web 函数访问

测试好了之后如何进行访问呢,我们需要在函数的触发管理里面创建一个触发器,触发方式可以选择「网关触发」。

提交之后就可以得到一个访问地址,通过这个地址我们就可以使用刚才的 Web Function 提供的服务了。

  • 示例服务地址:

https://service-rw82mcg7-1256464567.sh.apigw.tencentcs.com/release/decode

  • 测试二维码图片地址:

http://cdn.xuedingmiao.com/qrcode_xuedingmiao.com.png

04.

Web 函数访问

整体使用过程还是比较顺畅的,本地开发的代码不需要怎么改造就可以上传上去直接使用,除了文档方面资料相对少些,其它都还是比较方便的。

参考资料

  • Python 云函数开发方法:https://cloud.tencent.com/document/product/583/55593
  • Web 函数相关问题:https://cloud.tencent.com/document/product/583/56129
  • 依赖安装:https://cloud.tencent.com/document/product/583/39780#python-.E8.BF.90.E8.A1.8C.E6.97.B6

Web Function 体验官召集令!

惊喜福利满满

(点击下图 ? 查看详情)

Web Function 使用体验

(请在 PC 端访问)

  • Web Function 产品文档: https://cloud.tencent.com/document/product/583/56123
  • Web Function 快速体验链接: https://console.cloud.tencent.com/scf/list-create?rid=16&ns=default&keyword=WebFunc

当前已在国内各大区域发布上线,欢迎体验使用!


推荐阅读

One More Thing


欢迎进入千人 QQ 群 (871445853) 交流 Serverless!

  • GitHub: github.com/serverless
  • 官网: cloud.tencent.com/product/serverless-catalog

点击「阅读原文」,了解更多 Web Function 产品详情。

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 01.
  • 实现思路
  • 02.
  • Web 函数创建
    • 1. 本地开发
      • 2. 函数创建
        • 3. 函数测试
        • 03.
        • Web 函数访问
        • 04.
        • Web 函数访问
        相关产品与服务
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档