1
0
mirror of https://github.com/home-assistant/core.git synced 2025-12-24 12:59:34 +00:00

Run coroutines as eager tasks in async_run_hass_job (#111683)

* Run coroutines as eager tasks in async_run_hass_job

Note that this does not change async_add_hass_job

Do not merge this. For test run only

* Phase out periodic tasks

* false by default or some tests will block forever, will need to fix each one manually

* kwarg works

* kwarg works

* kwarg works

* fixes

* fix more tests

* fix more tests

* fix lifx

* opensky

* pvpc_hourly_pricing

* adjust more

* adjust more

* smarttub

* adjust more

* adjust more

* adjust more

* adjust more

* adjust

* no eager executor

* zha

* qnap_qsw

* fix more

* fix fix

* docs

* its a wrapper now

* add more coverage

* coverage

* cover all combos

* more fixes

* more fixes

* more fixes

* remaining issues are legit bugs in tests

* make tplink test more predictable

* more fixes

* feedreader

* grind out some more

* make test race safe

* limit first scope to triggers

* one more

* Start tasks eagerly in for async_at_start(ed)

A few of these can avoid being scheduled on the loop
during startup

* fix cloud

* Revert "fix cloud"

This reverts commit 5eb3ce695d.

* fix test to do what start does

* flip flag

* flip flag

* Fix here_travel_time creating many refresh requests at startup

- Each entity would try to refresh the coordinator which
  created many tasks. Move the refresh to a single
  async_at_started

- The tests fired the EVENT_HOMEASSISTANT_START event
  but the code used async_at_started which only worked
  because the tests did not set CoreState to not_running

* fix azure

* remove kw

* remove kw

* rip

* cover

* more rips

* more rips

* more rips
This commit is contained in:
J. Nick Koston
2024-03-11 14:05:08 -10:00
committed by GitHub
parent 53c3e27ed9
commit 620433a79d
17 changed files with 40 additions and 49 deletions

View File

@@ -969,9 +969,9 @@ async def _handle_entity_call(
partial(getattr(entity, func), **data), # type: ignore[arg-type]
job_type=entity.get_hassjob_type(func),
)
task = hass.async_run_hass_job(job, eager_start=True)
task = hass.async_run_hass_job(job)
else:
task = hass.async_run_hass_job(func, entity, data, eager_start=True)
task = hass.async_run_hass_job(func, entity, data)
# Guard because callback functions do not return a task when passed to
# async_run_job.
@@ -1006,7 +1006,7 @@ async def _async_admin_handler(
if not user.is_admin:
raise Unauthorized(context=call.context)
result = hass.async_run_hass_job(service_job, call, eager_start=True)
result = hass.async_run_hass_job(service_job, call)
if result is not None:
await result