You need to enable JavaScript to run this app. 如何基于GET请求调用API中指定Python函数实现计算与web服务分离
优惠活动
大模型
产品
解决方案
定价
更多

如何基于GET请求调用API中指定Python函数实现计算与web服务分离

实现方案

基础实现思路

你不需要自己写逻辑判断要调用的函数,直接用Python轻量API框架的路由功能就能实现路径和计算函数的绑定,开发效率高,也符合行业通用规范。最适合新手的方案是用FastAPI或者Flask搭建compute节点的API服务,整个流程的实现成本很低。

compute侧API示例(FastAPI版本)

FastAPI对新手友好,自带接口文档、参数校验,性能也足够用,示例代码如下:

from fastapi import FastAPI, HTTPException, Header
import pandas as pd

# 替换成你自己的数据库连接
from your_db_config import db_conn

app = FastAPI()
# 自定义API密钥,用于接口鉴权,避免未授权访问
VALID_API_KEY = "你自己设置的随机密钥串"

# 你的计算函数
def my_func():
    data = pd.read_sql("SELECT * FROM database", con=db_conn)
    # pandas DataFrame 转成可序列化的字典列表格式
    return data.to_dict(orient="records")

# 路由绑定:访问/my_func路径就会触发下面的处理函数
@app.get("/my_func")
def call_my_func(x_api_key: str = Header(None)):
    # 先校验API密钥
    if x_api_key != VALID_API_KEY:
        raise HTTPException(status_code=401, detail="非法访问")
    try:
        result = my_func()
        return {"code": 0, "msg": "success", "data": result}
    except Exception as e:
        raise HTTPException(status_code=500, detail=f"计算失败: {str(e)}")

写完之后直接用uvicorn就能启动服务:uvicorn main:app --host 0.0.0.0 --port 8000,启动后访问http://你的compute节点IP:8000/docs就能看到自动生成的接口调试页面,可以直接在线测试接口是否可用。

webpage侧调用示例

要加异常处理和超时设置,避免计算接口异常影响Django服务的稳定性:

import requests

COMPUTE_API_URL = "https://my_api.com/my_func"
API_KEY = "和compute节点设置的一致的密钥"

def get_compute_data():
    try:
        resp = requests.get(
            COMPUTE_API_URL,
            headers={"X-API-Key": API_KEY},
            timeout=120 # 根据你的计算任务实际耗时调整
        )
        # 状态码非200时直接抛出异常
        resp.raise_for_status()
        resp_json = resp.json()
        return resp_json["data"]
    except requests.exceptions.RequestException as e:
        # 这里可以加日志记录错误,或者返回自定义错误提示
        print(f"调用计算接口失败:{e}")
        return None

进阶优化(针对长耗时计算任务)

如果你的计算任务单次执行超过1分钟,不适合用同步调用的方式,会导致请求挂住,建议改成异步任务模式:

  • compute侧引入Celery + Redis/RabbitMQ做任务队列,收到请求后先返回任务ID,后台异步执行计算
  • webpage侧拿到任务ID后,可以定期轮询任务状态,或者给compute侧传回调地址,计算完成后主动通知webpage拿结果
学习资源推荐

入门教程

  • HTTP协议基础:先搞清楚HTTP常用方法、状态码、请求头、响应格式的基本概念,是API开发的基础
  • FastAPI官方入门教程:内容通俗易懂,有大量可直接运行的示例,跟着敲一遍就能写出可用的接口
  • Flask官方快速入门:如果你偏好更轻量、更灵活的框架,可以看这个,生态非常丰富,遇到问题很容易找到解决方案

相关书籍

  • 《FastAPI实战》:从零到一教你开发生产可用的FastAPI服务,包含很多实际项目的最佳实践,适合新手快速上手
  • 《Python Web开发实战》:覆盖Flask、API设计、性能优化、部署等全流程内容,能帮你建立完整的Python Web开发知识体系
  • 《RESTful API设计最佳实践》:教你设计规范、易维护、兼容性好的API接口,帮你避开常见的API设计坑

内容的提问来源于stack exchange,提问作者CutePoison

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.16 03:06:06