Run manually simulation in thread

This commit is contained in:
DingZQ
2025-05-22 23:05:57 +08:00
parent 5f3f75a0bc
commit 28eb0ee94c
2 changed files with 26 additions and 17 deletions

39
main.py
View File

@@ -28,6 +28,8 @@ import simulation
import globals import globals
import os import os
import logging import logging
import threading
import time
from logging.handlers import TimedRotatingFileHandler from logging.handlers import TimedRotatingFileHandler
JUNCTION = 0 JUNCTION = 0
@@ -2793,6 +2795,24 @@ class Run_Simulation_Manually_by_Date(BaseModel):
name: str name: str
simulation_date: str simulation_date: str
def run_simulation_manually_by_date(network_name: str, simulation_date: str) -> None:
# 循环生成96个时间点15分钟间隔
for i in range(96):
# 计算当前时间偏移
time_offset = timedelta(minutes=15 * i)
# 生成完整时间对象
current_time = base_date + time_offset
# 格式化成ISO8601带时区格式
iso_time = current_time.strftime("%Y-%m-%dT%H:%M:%S") + "+08:00"
## 执行函数调用
simulation.run_simulation(
name=network_name,
simulation_type="realtime",
modify_pattern_start_time=iso_time
)
@app.post("/runsimulationmanuallybydate/") @app.post("/runsimulationmanuallybydate/")
async def fastapi_run_simulation_manually_by_date(data: Run_Simulation_Manually_by_Date) -> None: async def fastapi_run_simulation_manually_by_date(data: Run_Simulation_Manually_by_Date) -> None:
@@ -2822,23 +2842,8 @@ async def fastapi_run_simulation_manually_by_date(data: Run_Simulation_Manually_
base_date = datetime.strptime(item['simulation_date'], "%Y-%m-%d") base_date = datetime.strptime(item['simulation_date'], "%Y-%m-%d")
# 循环生成96个时间点15分钟间隔 thread = threading.Thread(target=lambda: run_simulation_manually_by_date(item['name'], item['simulation_date']))
for i in range(96): thread.start()
# 计算当前时间偏移
time_offset = timedelta(minutes=15 * i)
# 生成完整时间对象
current_time = base_date + time_offset
# 格式化成ISO8601带时区格式
iso_time = current_time.strftime("%Y-%m-%dT%H:%M:%S") + "+08:00"
## 执行函数调用
simulation.run_simulation(
name=item['name'],
simulation_type="realtime",
modify_pattern_start_time=iso_time
)
############################################################ ############################################################
# real_time api 37.5 # real_time api 37.5

View File

@@ -16,6 +16,10 @@
11. 搭建FastAPI环境... 11. 搭建FastAPI环境...
12. 进入 `TJWaterServer`,执行 `startserber.bat` 12. 进入 `TJWaterServer`,执行 `startserber.bat`
NOTE:
版本问题
pip uninstall scipy numpy -y
pip install numpy==1.26.2 scipy==1.15.2
pg 信息 pg 信息
腾讯Windows服务器 腾讯Windows服务器