Cizz22 3 months ago
parent 8b3b46d1e0
commit 0dc95d4456

@ -74,6 +74,7 @@ async def get_simulation(db_session: DbSession, simulation_id):
async def run_simulations( async def run_simulations(
db_session: DbSession, db_session: DbSession,
simulation_in: SimulationInput, simulation_in: SimulationInput,
background_tasks: BackgroundTasks
): ):
"""RUN Simulation""" """RUN Simulation"""
@ -82,43 +83,54 @@ async def run_simulations(
) )
simulation_id = simulation.id simulation_id = simulation.id
# simulation_id = "efa8ef4c-0417-4d2d-95f3-41e4283737ab"
project = await get_project(db_session=db_session) project = await get_project(db_session=db_session)
try:
sim_data = simulation_in.model_dump(exclude={"SimulationName", "IsDefault"}) sim_data = simulation_in.model_dump(exclude={"SimulationName", "IsDefault"})
sim_data["HubCnnId"] = str(simulation_id) sim_data["HubCnnId"] = str(simulation_id)
sim_data["projectName"] = project.project_name sim_data["projectName"] = project.project_name
# Prepare async background task
# # ##background_tasks.add_task(execute_simulation, db_session=db_session ,simulation_id=simulation_id, sim_data=sim_data) async def run_full_simulation():
try:
results = await update_equipment_for_simulation( results = await update_equipment_for_simulation(
db_session=db_session, project_name=project.project_name, schematic_name=simulation_in.SchematicName, custom_input=simulation_in.CustomInput db_session=db_session,
project_name=project.project_name,
schematic_name=simulation_in.SchematicName,
custom_input=simulation_in.CustomInput,
) )
await execute_simulation( await execute_simulation(
db_session=db_session, simulation_id=simulation_id, sim_data=sim_data, is_saved=True, eq_update=results db_session=db_session,
simulation_id=simulation_id,
sim_data=sim_data,
is_saved=True,
eq_update=results,
) )
await calculate_plant_eaf(db_session=db_session, simulation_id=simulation_id, is_default=simulation_in.IsDefault, konkin_offset=simulation_in.Konkin_offset) await calculate_plant_eaf(
db_session=db_session,
simulation_id=simulation_id,
is_default=simulation_in.IsDefault,
konkin_offset=simulation_in.Konkin_offset,
)
result = await update_contribution_bulk_mappings(db_session=db_session, simulation_id=simulation_id) await update_contribution_bulk_mappings(
db_session=db_session, simulation_id=simulation_id
)
except Exception as e:
# TODO: log error into DB or logger
print(f"Simulation {simulation_id} failed: {e}")
# Add to background
background_tasks.add_task(run_full_simulation)
return { return {
"data": str(simulation_id), "data": str(simulation_id),
"status": "success", "status": "success",
"message": "Simulation created successfully", "message": "Simulation started successfully",
} }
except Exception as e:
raise HTTPException(
status_code=status.HTTP_500_INTERNAL_SERVER_ERROR, detail=str(e)
)
@router.get( @router.get(
"/result/calc/{simulation_id}", "/result/calc/{simulation_id}",
response_model=StandardResponse[List[SimulationCalc]], response_model=StandardResponse[List[SimulationCalc]],

Loading…
Cancel
Save