|
|
@@ -1,4 +1,5 @@
|
|
|
import asyncio
|
|
|
+import time
|
|
|
from datetime import date, timedelta
|
|
|
from typing import TYPE_CHECKING
|
|
|
|
|
|
@@ -23,6 +24,13 @@ ACTION_SPEC = ('diff', [])
|
|
|
_PRICE_PREFIX = 'Price: $'
|
|
|
|
|
|
|
|
|
+async def _timed(key: str, coro, timings: dict):
|
|
|
+ t0 = time.perf_counter()
|
|
|
+ result = await coro
|
|
|
+ timings[key] = round(time.perf_counter() - t0, 2)
|
|
|
+ return result
|
|
|
+
|
|
|
+
|
|
|
async def diff(
|
|
|
start_date: date,
|
|
|
end_date: date,
|
|
|
@@ -46,19 +54,22 @@ async def diff(
|
|
|
from room_cal.service_api import ServiceAPI as _ServiceAPI
|
|
|
if api is None:
|
|
|
api = _ServiceAPI()
|
|
|
+ timings: dict[str, float] = {}
|
|
|
+ t0 = time.perf_counter()
|
|
|
results = await asyncio.gather(
|
|
|
- _diff_prices(start_date, end_date, api),
|
|
|
- _diff_closed(start_date, end_date, api),
|
|
|
- _diff_reservations(start_date, end_date, api),
|
|
|
- _diff_user_cal_closed(start_date, end_date),
|
|
|
- _diff_ical_feeds_closed(start_date, end_date),
|
|
|
- _diff_rule_discounts(start_date, end_date),
|
|
|
- _diff_rule_closed(start_date, end_date),
|
|
|
- _diff_rule_prices(start_date, end_date),
|
|
|
- _diff_orphans(start_date, end_date),
|
|
|
+ _timed('prices', _diff_prices(start_date, end_date, api), timings),
|
|
|
+ _timed('closed', _diff_closed(start_date, end_date, api), timings),
|
|
|
+ _timed('reservations', _diff_reservations(start_date, end_date, api), timings),
|
|
|
+ _timed('user_cal_closed', _diff_user_cal_closed(start_date, end_date), timings),
|
|
|
+ _timed('ical_feeds_closed', _diff_ical_feeds_closed(start_date, end_date), timings),
|
|
|
+ _timed('rule_discounts', _diff_rule_discounts(start_date, end_date), timings),
|
|
|
+ _timed('rule_closed', _diff_rule_closed(start_date, end_date), timings),
|
|
|
+ _timed('rule_prices', _diff_rule_prices(start_date, end_date), timings),
|
|
|
+ _timed('orphans', _diff_orphans(start_date, end_date), timings),
|
|
|
)
|
|
|
+ timings['_total'] = round(time.perf_counter() - t0, 2)
|
|
|
keys = ['prices', 'closed', 'reservations', 'user_cal_closed', 'ical_feeds_closed', 'rule_discounts', 'rule_closed', 'rule_prices', 'orphans']
|
|
|
- return dict(zip(keys, results))
|
|
|
+ return {**dict(zip(keys, results)), '_timings': timings}
|
|
|
|
|
|
|
|
|
# ── prices ────────────────────────────────────────────────────────────────────
|