Делаю сейв, тут запускается FastAPI.

This commit is contained in:
maksim 2024-10-08 21:21:05 +04:00
parent 57b2836861
commit f709052990
6 changed files with 65 additions and 4 deletions

10
Dockerfile Normal file
View File

@ -0,0 +1,10 @@
FROM python:3.9-slim
WORKDIR /app
COPY requirements.txt requirements.txt
RUN pip install -r requirements.txt
COPY . .
CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000", "--reload"]

View File

@ -1,5 +1,5 @@
paths: paths:
starccm: '/home/user/Siemens/19.02.009-R8/STAR-CCM+19.02.009-R8/star/bin/starccm+' starccm: 'C:/Program Files/Siemens/19.04.007-R8/STAR-CCM+19.04.007-R8/star/bin/starccm+'
chemkin: '/media/user/Projects/burner_data/chemkin' chemkin: '/media/user/Projects/burner_data/chemkin'
main: '/media/user/Data/experiment_data' main: '/media/user/Data/experiment_data'

View File

@ -25,6 +25,17 @@ services:
volumes: volumes:
- clickhouse_data:/var/lib/clickhouse - clickhouse_data:/var/lib/clickhouse
fastapi:
build: .
container_name: fastapi-app
ports:
- "8000:8000"
depends_on:
- db
- clickhouse
volumes:
- .:/app # Связываем текущую директорию с контейнером для доступа к коду
volumes: volumes:
postgres_data: postgres_data:
clickhouse_data: clickhouse_data:

31
main.py Normal file
View File

@ -0,0 +1,31 @@
from fastapi import FastAPI, HTTPException
from pydantic import BaseModel
from new_experiment_planner import run_experiment # Импортируем функцию из твоего скрипта
app = FastAPI()
# Модель данных для передачи параметров
class ExperimentParameters(BaseModel):
outer_blades_count: str
outer_blades_length: str
outer_blades_angle: str
middle_blades_count: str
load: str
recycling: str
# Эндпоинт для запуска эксперимента
@app.post("/run_experiment/")
def run_experiment_api(params: ExperimentParameters):
try:
# Вызываем функцию run_experiment с параметрами
run_experiment(
params.outer_blades_count,
params.outer_blades_length,
params.outer_blades_angle,
params.middle_blades_count,
params.load,
params.recycling
)
return {"status": "success", "message": "Experiment started successfully."}
except Exception as e:
raise HTTPException(status_code=500, detail=f"An error occurred: {str(e)}")

View File

@ -210,6 +210,7 @@ def run_experiment(outer_blades_count, outer_blades_length, outer_blades_angle,
if __name__ == "__main__": if __name__ == "__main__":
import argparse
parser = argparse.ArgumentParser(description="Запуск экспериментов с энергетической установкой ГМУ-45") parser = argparse.ArgumentParser(description="Запуск экспериментов с энергетической установкой ГМУ-45")
parser.add_argument("outer_blades_count", type=str, help="Количество лопаток во внешнем контуре") parser.add_argument("outer_blades_count", type=str, help="Количество лопаток во внешнем контуре")
parser.add_argument("outer_blades_length", type=str, help="Ширина лопаток во внешнем контуре") parser.add_argument("outer_blades_length", type=str, help="Ширина лопаток во внешнем контуре")
@ -220,5 +221,11 @@ if __name__ == "__main__":
args = parser.parse_args() args = parser.parse_args()
run_experiment(args.outer_blades_count, args.outer_blades_length, args.outer_blades_angle, args.middle_blades_count, run_experiment(
args.load, args.recycling) args.outer_blades_count,
args.outer_blades_length,
args.outer_blades_angle,
args.middle_blades_count,
args.load,
args.recycling
)

View File

@ -5,4 +5,6 @@ psycopg[binary]
clickhouse-driver clickhouse-driver
pandas pandas
pydantic-settings pydantic-settings
clickhouse-connect clickhouse-connect
fastapi
uvicorn