You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:搭建由API调用触发的轻量Python脚本服务器

嘿,我来帮你一步步搞定这个需求!既然你有Python基础,那上手会很快的,咱们从最基础的轻量方案开始,先跑通核心流程,再慢慢优化。

分步实现指南

1. 选一个轻量的Python Web框架

推荐从Flask入手,它极简易上手,完全满足你的轻量服务器需求;如果之后想尝试更现代、带自动API文档的方案,再转FastAPI也很顺畅。

先安装Flask:

pip install flask

2. 编写核心API服务脚本

创建一个名为app.py的文件,把以下代码复制进去——我已经帮你把核心逻辑拆分好了,你只需要替换自己的处理代码就行:

from flask import Flask, request, jsonify

# 初始化Flask应用
app = Flask(__name__)

# ----------------------
# 这里放你的核心处理逻辑(原来的Python脚本)
# ----------------------
def your_processing_function(param1, param2, *args):
    # 示例逻辑:替换成你实际的代码
    try:
        # 先做参数类型转换(前端传的可能是字符串,按需调整)
        param1 = int(param1)
        param2 = float(param2)
        # 你的业务处理代码...
        processed_result = param1 * param2
        return {
            "status": "success",
            "input_params": {"param1": param1, "param2": param2},
            "data": processed_result
        }
    except Exception as e:
        # 异常处理,返回错误信息
        return {
            "status": "error",
            "message": str(e)
        }

# ----------------------
# 定义API接口,接收前端请求
# ----------------------
@app.route('/api/run-script', methods=['POST'])
def api_trigger_script():
    # 方式1:接收前端发送的JSON格式参数(推荐)
    request_data = request.get_json()
    
    # 检查必要参数是否存在
    required_params = ['param1', 'param2']  # 换成你需要的参数名
    if not request_data or any(param not in request_data for param in required_params):
        return jsonify({"status": "error", "message": "缺少必要参数"}), 400
    
    # 提取参数
    param1 = request_data['param1']
    param2 = request_data['param2']
    
    # 调用你的处理函数
    result = your_processing_function(param1, param2)
    
    # 返回JSON格式结果
    return jsonify(result)

# 启动服务器
if __name__ == '__main__':
    # host='0.0.0.0'允许外部访问,port指定端口,debug=True开发时自动重载
    app.run(host='0.0.0.0', port=5000, debug=True)

3. 测试API是否正常工作

启动脚本后,用以下方式测试:

  • 用curl命令(终端直接执行):
    curl -X POST http://localhost:5000/api/run-script \
    -H "Content-Type: application/json" \
    -d '{"param1": 10, "param2": 2.5}'
    
  • 用Postman/Thunder Client:新建POST请求,地址填http://localhost:5000/api/run-script,请求体选JSON格式,输入参数发送即可。

如果一切正常,你会收到类似这样的JSON响应:

{
  "status": "success",
  "input_params": {"param1": 10, "param2": 2.5},
  "data": 25.0
}

4. 集成你的现有Python脚本

把your_processing_function里的示例逻辑替换成你自己的脚本代码就行。注意:

  • 处理参数时要做好类型校验和转换,避免前端传错格式导致报错;
  • 如果你的脚本需要读取文件或依赖其他库,确保在服务器环境安装对应的依赖(可以用pip freeze > requirements.txt生成依赖清单,部署时用pip install -r requirements.txt安装)。

5. 部署到公网服务器(可选)

如果需要让外部前端访问,把服务部署到云服务器(比如阿里云轻量应用服务器):

  1. 在服务器上安装Python和pip;
  2. 上传你的app.py和requirements.txt;
  3. 安装依赖:pip install -r requirements.txt;
  4. 用Gunicorn替代Flask自带的测试服务器(更稳定):
    pip install gunicorn
    gunicorn -w 4 -b 0.0.0.0:5000 app:app
    
    (-w 4表示启动4个工作进程,根据服务器配置调整)
  5. 可以用systemd把服务做成后台运行,避免终端关闭后服务停止。

进阶:试试FastAPI(可选)

如果想体验更现代的API框架,FastAPI是个好选择——它自带自动生成的API文档,支持类型提示,性能也更强。安装命令:

pip install fastapi uvicorn

示例代码:

from fastapi import FastAPI
from pydantic import BaseModel

app = FastAPI()

# 定义请求参数模型,自动校验类型
class InputParams(BaseModel):
    param1: int
    param2: float

def your_processing_function(param1: int, param2: float):
    return {
        "status": "success",
        "input": {"param1": param1, "param2": param2},
        "data": param1 + param2
    }

@app.post("/api/run-script")
async def api_trigger_script(params: InputParams):
    result = your_processing_function(params.param1, params.param2)
    return result

启动命令:

uvicorn app:app --host 0.0.0.0 --port 5000 --reload

访问http://localhost:5000/docs就能看到自动生成的API文档,直接在网页上测试接口,非常方便。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 07:16:06