OpenFaaS 实战:开发函数(处理图片压缩)并通过 UI 界面部署与调用

OpenFaaS 实战:图片压缩函数开发与部署

1. 环境准备
  • 安装 OpenFaaS CLI:
curl -sSL https://cli.openfaas.com | sudo sh

  • 登录 OpenFaaS 网关:
faas-cli login --username admin --password <your_password>

2. 创建函数模板
faas-cli new --lang python3 img-compress

生成文件结构:

img-compress/
├── handler.py
└── requirements.txt

3. 实现图片压缩逻辑(handler.py
from PIL import Image
import io

def handle(req):
    # 接收二进制图片数据
    img_bytes = req.encode('latin1') 
    img = Image.open(io.BytesIO(img_bytes))
    
    # 压缩参数设置
    img = img.convert('RGB')
    output = io.BytesIO()
    img.save(output, format='JPEG', quality=70, optimize=True)
    
    return output.getvalue().decode('latin1')

4. 添加依赖(requirements.txt
Pillow==9.5.0

5. 构建函数镜像
faas-cli build -f img-compress.yml

6. 部署函数
faas-cli deploy -f img-compress.yml

7. 通过 UI 界面操作
  1. 访问控制台http://<your-gateway-ip>:8080

  2. 部署函数

    • 点击 "Deploy New Function"
    • 选择 "img-compress" 函数
    • 设置 CPU/Memory 限制(建议 128MB/100mCPU)
  3. 调用函数

    • 在函数列表点击 "Invoke"
    • 上传图片文件(JPEG/PNG)
    • 点击 "Invoke" 获取压缩后图片
8. 测试验证
curl -X POST http://<gateway-ip>:8080/function/img-compress \
  --data-binary "@input.jpg" \
  --output compressed.jpg

技术要点说明
  1. 图像处理原理

    • 使用 Pillow 库进行格式转换
    • 质量参数控制:$Q \in [1,100]$,$Q$ 值越小压缩率越高
    • 优化编码:optimize=True 启用霍夫曼编码优化
  2. OpenFaaS 特性

    • 冷启动时间 < 300ms(Python 环境)
    • 自动扩缩容机制
    • 内置 Prometheus 监控指标

注意:生产环境建议添加异常处理(如非图片输入检测)和日志输出,可通过 faas-cli logs img-compress 实时查看运行日志。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值