Run manually simulation in thread
This commit is contained in:
39
main.py
39
main.py
@@ -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
|
||||||
|
|||||||
@@ -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服务器
|
||||||
|
|||||||
Reference in New Issue
Block a user