跳到主要内容

Python 快速开始

本文档介绍如何从零开始创建一个 Python 应用,并将其部署到 CloudBase HTTP 云函数中。该项目使用 Flask 作为 Web 应用框架。

前置条件

在开始之前,请确保您已经:

  • 安装了 Python 3.10 或更高版本
  • 拥有腾讯云账号并开通了 CloudBase 服务
  • 了解基本的 Python 和 Flask 开发知识

第一步:创建项目目录

创建名为 helloworld-python 的新项目目录,并进入该目录:

mkdir helloworld-python
cd helloworld-python

第二步:设置 Python 虚拟环境

创建并激活虚拟环境,以便管理项目依赖:

# 创建虚拟环境
python -m venv env

# 激活虚拟环境
# Linux/macOS
source env/bin/activate

# Windows
# env\Scripts\activate

💡 提示:使用虚拟环境可以避免依赖冲突,确保项目的独立性。

第三步:安装依赖

安装 Flask 框架:

pip install flask

第四步:编写应用代码

创建 app.py 文件作为应用的入口文件:

⚠️ 重要提示:CloudBase HTTP 云函数的默认端口必须是 9000

import os
from flask import Flask, jsonify, request

app = Flask(__name__)

@app.route('/')
def hello():
"""根路径处理函数"""
return 'Hello World from Python Flask!'

@app.route('/health')
def health_check():
"""健康检查接口"""
return jsonify({
'status': 'healthy',
'message': 'Python Flask app is running',
'python_version': os.sys.version
})

@app.route('/api/info')
def get_info():
"""获取请求信息"""
return jsonify({
'method': request.method,
'path': request.path,
'headers': dict(request.headers),
'args': dict(request.args)
})

@app.errorhandler(404)
def not_found(error):
"""404 错误处理"""
return jsonify({'error': 'Not Found', 'message': 'The requested resource was not found'}), 404

@app.errorhandler(500)
def internal_error(error):
"""500 错误处理"""
return jsonify({'error': 'Internal Server Error', 'message': 'Something went wrong'}), 500

if __name__ == '__main__':
# 监听所有网络接口的 9000 端口
app.run(host='0.0.0.0', port=9000, debug=False)

此代码创建了一个基本的 Flask Web 应用,提供以下功能:

  • 根路径 (/):返回欢迎消息
  • 健康检查 (/health):返回应用状态信息
  • 信息接口 (/api/info):返回请求详细信息
  • 错误处理:统一的 404 和 500 错误处理

第五步:生成依赖文件

生成 requirements.txt 文件,记录项目依赖:

pip freeze > requirements.txt

查看生成的依赖文件:

cat requirements.txt

典型的 requirements.txt 内容如下:

blinker==1.7.0
click==8.1.7
Flask==3.0.0
itsdangerous==2.1.2
Jinja2==3.1.2
MarkupSafe==2.1.3
Werkzeug==3.0.1

第六步:创建启动脚本

创建 scf_bootstrap 文件(无扩展名),这是 CloudBase 云函数的启动脚本:

#!/bin/bash
export PYTHONPATH="./env/lib/python3.10/site-packages:$PYTHONPATH"
/var/lang/python310/bin/python3.10 app.py

⚠️ 注意

  • 文件名必须是 scf_bootstrap,没有扩展名
  • Python 路径需要与运行时版本匹配(这里使用 Python 3.10)
  • 确保文件具有执行权限

为启动脚本添加执行权限:

chmod +x scf_bootstrap

第七步:本地测试(可选)

在部署之前,您可以在本地测试应用:

python app.py

测试成功后,您可以通过以下方式验证:

  • 访问 http://localhost:9000/ 查看欢迎消息
  • 访问 http://localhost:9000/health 查看健康状态
  • 访问 http://localhost:9000/api/info 查看请求信息

Ctrl + C 停止本地服务器。

第八步:准备部署文件

确保您的项目目录包含以下文件:

helloworld-python/
├── env/ # 虚拟环境目录
│ └── lib/
│ └── python3.10/
│ └── site-packages/
├── app.py # 应用主文件
├── requirements.txt # 依赖列表
└── scf_bootstrap # 启动脚本

第九步:打包项目

将项目文件打包为 ZIP 文件:

# 确保在项目根目录
zip -r -q helloworld-python.zip ./*

💡 打包提示

  • 包含 env 目录以确保依赖完整
  • 确保 scf_bootstrap 文件包含在内
  • 避免包含不必要的文件(如 .git__pycache__ 等)

第十步:部署到 CloudBase HTTP 云函数

通过控制台部署

  1. 登录 CloudBase 控制台
  2. 选择您的环境,进入「云函数」页面
  3. 点击「新建云函数」
  4. 选择「HTTP 云函数」
  5. 填写函数名称(如:helloworld-python
  6. 选择运行时:Python 3.10
  7. 选择「本地上传」方式
  8. 上传刚才创建的 helloworld-python.zip 文件
  9. 点击「确定」完成部署

通过 CLI 部署(敬请期待)

第十一步:访问您的应用

部署成功后,您可以参考Web 客户端调用设置自定义域名访问HTTP 云函数

您可以通过以下方式测试:

  • 访问根路径查看欢迎消息
  • 访问 /health 路径查看应用状态
  • 访问 /api/info 路径查看请求信息

常见问题

Q: 为什么必须使用 9000 端口?

A: CloudBase HTTP 云函数要求应用监听 9000 端口,这是平台的标准配置。

Q: scf_bootstrap 文件的作用是什么?

A: scf_bootstrap 是云函数的启动脚本,用于设置环境变量和启动应用程序。

Q: 如何查看函数日志?

A: 在 CloudBase 控制台的云函数页面,点击函数名称进入详情页,可以查看运行日志。

Q: 支持哪些 Python 版本?

A: CloudBase 支持 Python 3.6、3.7、3.9、3.10 等版本,建议使用 Python 3.10。

Q: 如何处理依赖包过大的问题?

A: 可以使用层(Layer)功能来管理大型依赖包,或者使用 pip install --no-deps 只安装必要的包。

最佳实践

  1. 依赖管理:使用 requirements.txt 精确指定依赖版本
  2. 错误处理:实现统一的错误处理机制
  3. 日志记录:使用 Python 的 logging 模块记录关键信息
  4. 环境变量:使用环境变量管理配置信息
  5. 代码结构:对于复杂应用,建议使用蓝图(Blueprint)组织代码

下一步