Files
FastAPI_async/influx_related.py
2025-09-25 10:40:29 +02:00

34 lines
1.1 KiB
Python

from fastapi import FastAPI
from influxdb_client.client.influxdb_client_async import InfluxDBClientAsync
from influxdb_client import Point
from config import *
influxdb_client: InfluxDBClientAsync
def init_influx(app: FastAPI):
global influxdb_client
influxdb_client = InfluxDBClientAsync(
url=INFLUX_URL,
token=INFLUX_TOKEN,
org=INFLUX_ORG,
)
return influxdb_client
async def get_influxdb_client() -> InfluxDBClientAsync:
global influxdb_client
return influxdb_client
async def get_influx_data(client: InfluxDBClientAsync) -> list[dict]:
query_api = client.query_api()
query = f'from(bucket: "{INFLUX_BUCKET}") |> range(start: -1h)'
tables = await query_api.query(query=query, org=INFLUX_ORG)
records = [
{"time": record.get_time(), "value": record.get_value(), "field": record.get_field()}
for table in tables for record in table.records
]
return records
async def write_influx_data(client: InfluxDBClientAsync, temp:float):
point = Point("measurement").field("temperature", temp)
return await client.write_api().write(bucket=INFLUX_BUCKET, record=point)