新增同步存储方法;新增run_server.py文件;修改默认的数据库连接方式;

This commit is contained in:
JIANG
2025-12-08 17:33:50 +08:00
parent 4fbdea435b
commit 44119c9725
9 changed files with 446 additions and 102 deletions

92
main.py
View File

@@ -1,11 +1,17 @@
import asyncio, os, io, json, time, pickle, redis, datetime, logging, threading, uvicorn, multiprocessing, asyncio, shutil, random
import os
import json
import time
import datetime
import logging
import threading
import shutil
import random
from typing import *
from typing import List, Annotated, Optional, Union
from urllib.request import Request
from xml.dom import minicompat
from pydantic import BaseModel
from starlette.responses import FileResponse, JSONResponse
from starlette.middleware.base import BaseHTTPMiddleware
from starlette.types import Receive
from fastapi import (
FastAPI,
File,
@@ -13,47 +19,39 @@ from fastapi import (
Response,
status,
Request,
Body,
HTTPException,
Query,
Depends,
Header,
)
from fastapi.responses import PlainTextResponse
from fastapi.middleware.gzip import GZipMiddleware
from tjnetwork import *
from multiprocessing import Value
import uvicorn
import msgpack
from run_simulation import run_simulation, run_simulation_ex
from online_Analysis import *
from fastapi.middleware.cors import CORSMiddleware
from influxdb_client import (
InfluxDBClient,
BucketsApi,
WriteApi,
OrganizationsApi,
Point,
QueryApi,
)
from typing import List, Dict
from starlette.responses import FileResponse, JSONResponse
from contextlib import asynccontextmanager
from pydantic import BaseModel
from multiprocessing import Value
import redis
import msgpack
from datetime import datetime, timedelta, timezone
from dateutil import parser
import influxdb_info
# 第三方/自定义模块
import influxdb_api
import timescaledb
import py_linq
import time_api
import simulation
import globals
import os
import logging
import threading
import time
from logging.handlers import TimedRotatingFileHandler
from fastapi import FastAPI, APIRouter, Depends, HTTPException, status, Request
from fastapi.security import OAuth2PasswordBearer
from fastapi import FastAPI, Depends, HTTPException, Header
from typing import Annotated
import project_info
from timescaledb.database import db as tsdb
from postgresql.database import db as pgdb
from online_Analysis import *
from tjnetwork import *
JUNCTION = 0
RESERVOIR = 1
@@ -116,6 +114,25 @@ async def verify_token(authorization: Annotated[str, Header()] = None):
# app = FastAPI(dependencies=[Depends(global_auth)])
app = FastAPI()
# 生命周期管理器
@asynccontextmanager
async def lifespan(app: FastAPI):
# 初始化数据库连接池
tsdb.init_pool()
pgdb.init_pool()
await tsdb.open()
await pgdb.open()
yield
# 清理资源
tsdb.close()
pgdb.close()
app = FastAPI(lifespan=lifespan)
app.include_router(timescaledb.router)
access_tokens = []
@@ -3466,9 +3483,11 @@ async def fastapi_run_simulation_manually_by_date(
item["name"], base_date, item["start_time"], item["duration"]
)
)
thread.start()
thread.join() # 等待线程完成
return {"status": "success"}
except Exception as e:
return {"status": "error", "message": str(e)}
@@ -4213,11 +4232,10 @@ async def get_dict(item: Item):
if __name__ == "__main__":
# uvicorn.run(app, host="0.0.0.0", port=8000)
# url='http://127.0.0.1:8000/valve_close_analysis?network=beibeizone&start_time=2024-04-01T08:00:00Z&valve_IDs=GSD2307192058577780A3287D78&valve_IDs=GSD2307192058572E953B707226(S2)&duration=1800'
# url='http://127.0.0.1:8000/burst_analysis?network=beibeizone&start_time=2024-04-01T08:00:00Z&burst_ID=ZBBGXSZW000001&duration=1800'
url='http://127.0.0.1:8000/burst_analysis?network=beibeizone&start_time=2024-04-01T08:00:00Z&burst_ID=ZBBGXSZW000001&duration=1800'
# url = "http://192.168.1.36:8000/queryallschemeallrecords/?schemename=Fangan0817114448&querydate=2025-08-13&schemetype=burst_Analysis"
# response = Request.get(url)
# import requests
import requests
# response = requests.get(url)
print(get_all_scada_info("szh"))
response = requests.get(url)