Query influx db for api usage :param organisation_id: filtered organisation :param date_range: data range for current api usage window :return: number of current api calls
(
organisation_id: int,
date_start: datetime,
)
| 437 | |
| 438 | |
| 439 | def get_current_api_usage( |
| 440 | organisation_id: int, |
| 441 | date_start: datetime, |
| 442 | ) -> int: |
| 443 | """ |
| 444 | Query influx db for api usage |
| 445 | |
| 446 | :param organisation_id: filtered organisation |
| 447 | :param date_range: data range for current api usage window |
| 448 | |
| 449 | :return: number of current api calls |
| 450 | """ |
| 451 | bucket = InfluxDBWrapper.get_downsampled_bucket(DownsampleSize.FIFTEEN_MINUTES) |
| 452 | results = InfluxDBWrapper.influx_query_manager( |
| 453 | date_start=date_start, |
| 454 | bucket=bucket, |
| 455 | filters=build_filter_string( |
| 456 | [ |
| 457 | 'r._measurement == "api_call"', |
| 458 | 'r["_field"] == "request_count"', |
| 459 | f'r["organisation_id"] == "{organisation_id}"', |
| 460 | ] |
| 461 | ), |
| 462 | drop_columns=("_start", "_stop", "_time"), |
| 463 | extra='|> sum() \ |
| 464 | |> group() \ |
| 465 | |> sort(columns: ["_value"], desc: true) ', |
| 466 | ) |
| 467 | |
| 468 | for result in results: |
| 469 | # Return zero if there are no API calls recorded. |
| 470 | if len(result.records) == 0: |
| 471 | return 0 |
| 472 | |
| 473 | return sum(r.get_value() for r in result.records) |
| 474 | |
| 475 | return 0 |
| 476 | |
| 477 | |
| 478 | def get_platform_usage_trends( |
searching dependent graphs…