Commit Graph

13 Commits (6e4551f73f31d7b58989e142d5d2de733a6d5386)

Author SHA1 Message Date
epenet 5442d6af01
Improve msg type hint in websocket commands () 2022-10-18 16:41:17 +02:00
J. Nick Koston fcb6888f87
Start logbook stream faster ()
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
2022-09-09 17:16:02 -05:00
J. Nick Koston 720768560d
Fix devices missing in logbook when all requested entities are filtered () 2022-06-28 08:44:06 +02:00
J. Nick Koston 8b067e83f7
Initial orjson support take 3 ()
* Initial orjson support take 2

Still need to work out problem building wheels

--

Redux of  /  Now possible since the following is solved:
 (comment)

This implements orjson where we use our default encoder.  This does not implement orjson where `ExtendedJSONEncoder` is used as these areas tend to be called far less frequently.  If its desired, this could be done in a followup, but it seemed like a case of diminishing returns (except maybe for large diagnostics files, or traces, but those are not expected to be downloaded frequently).

Areas where this makes a perceptible difference:
- Anything that subscribes to entities (Initial subscribe_entities payload)
- Initial download of registries on first connection / restore
- History queries
- Saving states to the database
- Large logbook queries
- Anything that subscribes to events (appdaemon)

Cavets:
orjson supports serializing dataclasses natively (and much faster) which
eliminates the need to implement `as_dict` in many places
when the data is already in a dataclass. This works
well as long as all the data in the dataclass can also
be serialized. I audited all places where we have an `as_dict`
for a dataclass and found only backups needs to be adjusted (support for `Path` needed to be added for backups).  I was a little bit worried about `SensorExtraStoredData` with `Decimal` but it all seems to work out from since it converts it before it gets to the json encoding cc @dgomes

If it turns out to be a problem we can disable this
with option |= [orjson.OPT_PASSTHROUGH_DATACLASS](https://github.com/ijl/orjson#opt_passthrough_dataclass) and it
will fallback to `as_dict`

Its quite impressive for history queries
<img width="1271" alt="Screen_Shot_2022-05-30_at_23_46_30" src="https://user-images.githubusercontent.com/663432/171145699-661ad9db-d91d-4b2d-9c1a-9d7866c03a73.png">

* use for views as well

* handle UnicodeEncodeError

* tweak

* DRY

* DRY

* not needed

* fix tests

* Update tests/components/http/test_view.py

* Update tests/components/http/test_view.py

* black

* templates
2022-06-22 21:59:51 +02:00
J. Nick Koston 457c7a4ddc
Fix incompatiblity with live logbook and google_assistant () 2022-06-05 19:06:49 -10:00
J. Nick Koston 6b2e5858b3
Send an empty logbook response when all requested entity_ids are filtered away () 2022-06-05 21:14:47 -07:00
J. Nick Koston 5d2326386d
Fix logbook spinner never disappearing when all entities are filtered () 2022-06-01 12:33:46 +02:00
J. Nick Koston c365454afb
Revert "Initial orjson support ()" ()
This was causing the wheels to fail to build. We need
to workout why when we don't have release pressure

This reverts commit d9d22a9556.
2022-05-31 13:51:55 -07:00
J. Nick Koston 935ef79156
Fix queries for logbook context_ids running in the wrong executor () 2022-05-31 12:24:18 -07:00
J. Nick Koston d9d22a9556
Initial orjson support () 2022-05-31 12:18:11 -07:00
J. Nick Koston 1c25e1d7b1
Add metadata to logbook live stream websocket endpoint () 2022-05-23 22:37:47 -07:00
J. Nick Koston 9d95b9ab05
Chunk large logbook queries and add an end_time to the api so we stop sending events () 2022-05-23 15:40:00 -07:00
J. Nick Koston 9c3f949165
Add live streaming logbook websocket endpoint ()
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
2022-05-22 14:57:54 -05:00