Changes
This commit is contained in:
parent
fbdf68fa2d
commit
a595202e40
11
Dockerfile
11
Dockerfile
@ -1,15 +1,16 @@
|
|||||||
# docker build . --platform linux/amd64 --push -t leafdev.top/models/nailong-detector:v0.0.2
|
# docker build . --platform linux/amd64 --push -t leafdev.top/leaf/icp-api:v0.0.1
|
||||||
#FROM python:3.12.7
|
#FROM python:3.12.7
|
||||||
FROM docker.io/pytorch/pytorch:2.5.1-cuda12.4-cudnn9-runtime
|
FROM docker.io/pytorch/pytorch:2.5.1-cuda12.4-cudnn9-runtime
|
||||||
|
|
||||||
#
|
|
||||||
WORKDIR /app
|
WORKDIR /app
|
||||||
|
|
||||||
COPY requirements.txt /app
|
COPY requirements.txt /app
|
||||||
RUN pip install --no-cache-dir --upgrade -r requirements.txt
|
RUN pip install --no-cache-dir --upgrade -r requirements.txt
|
||||||
RUN apt update && apt-get install ffmpeg libsm6 libxext6 -y
|
|
||||||
RUN rm -rf /var/cache/apt/archives /var/lib/apt/lists/*.
|
# 移除 onnxruntime 并重新安装
|
||||||
#
|
RUN pip uninstall onnxruntime onnxruntime-gpu -y && pip install onnxruntime-gpu
|
||||||
|
|
||||||
|
# 拷贝剩下的文件
|
||||||
COPY . /app
|
COPY . /app
|
||||||
|
|
||||||
#
|
#
|
||||||
|
35
main.py
35
main.py
@ -3,21 +3,20 @@ import json
|
|||||||
import requests
|
import requests
|
||||||
import hashlib
|
import hashlib
|
||||||
import time
|
import time
|
||||||
import os
|
|
||||||
from urllib import parse
|
from urllib import parse
|
||||||
import uuid
|
import uuid
|
||||||
from fastapi import FastAPI, HTTPException, Query
|
from fastapi import FastAPI, HTTPException, Query
|
||||||
from fastapi.responses import JSONResponse
|
import uvicorn
|
||||||
from pydantic import BaseModel, Field
|
|
||||||
from typing import List, Optional
|
|
||||||
from cryptography.hazmat.primitives.ciphers import Cipher, algorithms, modes
|
from cryptography.hazmat.primitives.ciphers import Cipher, algorithms, modes
|
||||||
from cryptography.hazmat.backends import default_backend
|
from cryptography.hazmat.backends import default_backend
|
||||||
|
from pydantic import BaseModel
|
||||||
|
from starlette import status
|
||||||
|
|
||||||
from detect import Detect
|
from detect import Detect
|
||||||
import functools
|
import functools
|
||||||
import logging
|
import logging
|
||||||
from models import QueryResponse
|
from models import QueryResponse
|
||||||
from cache import save_to_cache, load_from_cache
|
from cache import save_to_cache, load_from_cache
|
||||||
import random
|
|
||||||
import re
|
import re
|
||||||
|
|
||||||
# 配置日志
|
# 配置日志
|
||||||
@ -52,6 +51,31 @@ app = FastAPI(
|
|||||||
version="1.0.0"
|
version="1.0.0"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
class HealthCheck(BaseModel):
|
||||||
|
"""Response model to validate and return when performing a health check."""
|
||||||
|
|
||||||
|
status: str = "OK"
|
||||||
|
@app.get(
|
||||||
|
"/health",
|
||||||
|
tags=["healthcheck"],
|
||||||
|
summary="Perform a Health Check",
|
||||||
|
response_description="Return HTTP Status Code 200 (OK)",
|
||||||
|
status_code=status.HTTP_200_OK,
|
||||||
|
response_model=HealthCheck,
|
||||||
|
)
|
||||||
|
def get_health() -> HealthCheck:
|
||||||
|
"""
|
||||||
|
## Perform a Health Check
|
||||||
|
Endpoint to perform a healthcheck on. This endpoint can primarily be used Docker
|
||||||
|
to ensure a robust container orchestration and management is in place. Other
|
||||||
|
services which rely on proper functioning of the API service will not deploy if this
|
||||||
|
endpoint returns any other HTTP status code except 200 (OK).
|
||||||
|
Returns:
|
||||||
|
HealthCheck: Returns a JSON response with the health status
|
||||||
|
"""
|
||||||
|
return HealthCheck(status="OK")
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@retry_with_backoff(retries=3)
|
@retry_with_backoff(retries=3)
|
||||||
def auth():
|
def auth():
|
||||||
@ -314,5 +338,4 @@ async def query_api(
|
|||||||
raise HTTPException(status_code=500, detail=str(e))
|
raise HTTPException(status_code=500, detail=str(e))
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
import uvicorn
|
|
||||||
uvicorn.run(app, host="0.0.0.0", port=8000)
|
uvicorn.run(app, host="0.0.0.0", port=8000)
|
67
manifest.yaml
Normal file
67
manifest.yaml
Normal file
@ -0,0 +1,67 @@
|
|||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
name: icp-api
|
||||||
|
namespace: tool-apis
|
||||||
|
spec:
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
app: icp-api
|
||||||
|
tier: backend
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
app: icp-api
|
||||||
|
tier: backend
|
||||||
|
spec:
|
||||||
|
imagePullSecrets:
|
||||||
|
- name: registry-secret
|
||||||
|
runtimeClassName: "nvidia"
|
||||||
|
containers:
|
||||||
|
- name: icp-api
|
||||||
|
image: leafdev.top/leaf/icp-api:v0.0.1
|
||||||
|
ports:
|
||||||
|
- containerPort: 80
|
||||||
|
protocol: TCP
|
||||||
|
name: http
|
||||||
|
readinessProbe:
|
||||||
|
httpGet:
|
||||||
|
path: /health
|
||||||
|
port: 80
|
||||||
|
initialDelaySeconds: 5
|
||||||
|
resources:
|
||||||
|
limits:
|
||||||
|
nvidia.com/gpu: "1"
|
||||||
|
nvidia.com/gpumem: "1000"
|
||||||
|
---
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: icp-api
|
||||||
|
namespace: tool-apis
|
||||||
|
spec:
|
||||||
|
selector:
|
||||||
|
app: icp-api
|
||||||
|
tier: backend
|
||||||
|
type: ClusterIP
|
||||||
|
ports:
|
||||||
|
- port: 80
|
||||||
|
targetPort: 80
|
||||||
|
protocol: TCP
|
||||||
|
name: http
|
||||||
|
---
|
||||||
|
apiVersion: gateway.networking.k8s.io/v1
|
||||||
|
kind: HTTPRoute
|
||||||
|
metadata:
|
||||||
|
name: icp-api-http
|
||||||
|
namespace: tool-apis
|
||||||
|
spec:
|
||||||
|
hostnames:
|
||||||
|
- icp-api-testing.leaflow.cn
|
||||||
|
parentRefs:
|
||||||
|
- name: http-gw
|
||||||
|
namespace: networking
|
||||||
|
rules:
|
||||||
|
- backendRefs:
|
||||||
|
- name: icp-api
|
||||||
|
port: 80
|
BIN
requirements.txt
BIN
requirements.txt
Binary file not shown.
Loading…
Reference in New Issue
Block a user