Commit e1ae301e authored by 马勇's avatar 马勇

init

parents
Pipeline #2721 failed with stages
FROM python:3.12-slim
WORKDIR /app
ENV UV_VERSION=0.9.17
RUN pip install --no-cache-dir uv==${UV_VERSION}
COPY pyproject.toml ./
RUN uv sync --no-dev
COPY main.py main.py
RUN mkdir -p uploads
EXPOSE 5000
CMD [".venv/bin/python", "main.py"]
# Jingke POC Demo
这是一个基于 Flask 的简单文件上传服务的 POC (Proof of Concept) 演示项目。
## 功能说明
该应用提供了一个简单的文件上传接口,将上传的文件保存到服务器的 `uploads` 目录中。每次上传有 50% 的概率返回成功或失败状态。
## 技术栈
- Python 3.12
- Flask 3.1.2
- uv 包管理工具
## 运行方式
### 本地运行
1. 安装依赖:
```bash
pip install uv
uv sync
```
2. 运行应用:
```bash
python main.py
```
### Docker 运行
构建并运行 Docker 镜像:
```bash
docker build -t jingke-poc-demo .
docker run -p 5000:5000 jingke-poc-demo
```
## API 接口
### 文件上传
- **URL**: `/upload`
- **方法**: POST
- **参数**: `file` (表单数据中的文件)
- **响应**:
- 成功时返回 "ok"
- 失败时返回 "fail"
## 注意事项
这是一个概念验证项目,仅用于演示目的,不建议在生产环境中使用。
\ No newline at end of file
import os
import random
from datetime import datetime
from flask import Flask, request
app = Flask(__name__)
UPLOAD_FOLDER = "uploads"
os.makedirs(UPLOAD_FOLDER, exist_ok=True)
@app.route("/upload", methods=["POST"])
def upload_file():
if "file" not in request.files:
return "No file part"
file = request.files["file"]
res = random.choice(["ok", "fail"])
if res == "fail":
return res
if file.filename == "":
return "No selected file"
timestamp = datetime.now().strftime("%Y%m%d_%H%M%S")
save_path = os.path.join(UPLOAD_FOLDER, timestamp + '_' + file.filename)
file.save(save_path)
return res
if __name__ == "__main__":
app.run(host="0.0.0.0", port=5000, debug=True)
[project]
name = "jingke-poc-demo"
version = "0.1.0"
description = "Add your description here"
requires-python = ">=3.12"
dependencies = [
"flask>=3.1.2",
]
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment