From d40480911152d2ccfe68cfc46d63386d8f51d2d7 Mon Sep 17 00:00:00 2001 From: DingZQ Date: Sun, 16 Mar 2025 12:45:28 +0800 Subject: [PATCH] Add API queryallschemeallrecords --- influxdb_api.py | 6 ++++-- main.py | 21 +++++++++++++++++++++ 2 files changed, 25 insertions(+), 2 deletions(-) diff --git a/influxdb_api.py b/influxdb_api.py index 8beac77..492e3da 100644 --- a/influxdb_api.py +++ b/influxdb_api.py @@ -333,12 +333,13 @@ def store_realtime_SCADA_data_to_influxdb(get_real_value_time: str, bucket: str if client.ping(): pass else: - print("{} -- Failed to connect to InfluxDB.".format( - datetime.now().strftime('%Y-%m-%d %H:%M:%S'))) + print("{} -- Failed to connect to InfluxDB.".format( datetime.now().strftime('%Y-%m-%d %H:%M:%S'))) + write_options = WriteOptions( jitter_interval=200, # 添加抖动以避免同时写入 max_retry_delay=30000 # 最大重试延迟(毫秒) ) + write_api = client.write_api(write_options=write_options) # 创建一个临时存储点数据的列表 points_to_write = [] @@ -2594,6 +2595,7 @@ def query_scheme_all_record(scheme_Type: str, scheme_Name: str, query_date: str, # 2025/03/04 +# burst_Analysis def query_scheme_all_record_property(scheme_Type: str, scheme_Name: str, query_date: str, type: str, property: str, bucket: str="scheme_simulation_result", client: InfluxDBClient=client) -> list: """ diff --git a/main.py b/main.py index 6ada17b..1b6efe9 100644 --- a/main.py +++ b/main.py @@ -2258,6 +2258,27 @@ async def fastapi_query_all_scada_records_by_date(querydate: str): return result_dict +# DingZQ, 2025-03-15 +# Scheme +@app.get("/queryallschemeallrecords/") +async def fastapi_query_all_scheme_all_records(schemetype: str, schemename: str, querydate: str) -> tuple: + # 缓存查询结果提高性能 + global redis_client + cache_key = f"{queryallschemeallrecords}_{schemetype}_{schemename}_{querydate}" + data = redis_client.get(cache_key) + if data: + # 使用自定义的反序列化函数 + loaded_dict = msgpack.unpackb(data, object_hook=object_hook) + return loaded_dict + + results = influxdb_api.query_scheme_all_record(scheme_Type==schemetype, scheme_Name=schemename, query_date=querydate, client=influx_client) + packed = msgpack.packb(results, default=default_encoder) + redis_client.set(cache_key, packed) + + return results + + + @app.post("/clearredis/") async def fastapi_clear_redis(key: str):