home-assistant / core

:house_with_garden: Open source home automation that puts local control and privacy first.
https://www.home-assistant.io
Apache License 2.0
69.25k stars 28.47k forks source link

Fix Habitica doing blocking I/O in the event loop #117647

Closed tr4nt0r closed 2 weeks ago

tr4nt0r commented 2 weeks ago

Proposed change

The Habitipy library loads the api definitions from a file during instantiation. This now happens in the executor.

Type of change

Additional information

Checklist

If user exposed functionality or configuration variables are added/changed:

If the code communicates with devices, web services, or third-party tools:

To help with the load of incoming pull requests:

home-assistant[bot] commented 2 weeks ago

Hey there @asmfreak, @leikoilja, mind taking a look at this pull request as it has been labeled with an integration (habitica) you are listed as a code owner for? Thanks!

Code owner commands Code owners of `habitica` can trigger bot actions by commenting: - `@home-assistant close` Closes the pull request. - `@home-assistant rename Awesome new title` Renames the pull request. - `@home-assistant reopen` Reopen the pull request. - `@home-assistant unassign habitica` Removes the current integration label and assignees on the pull request, add the integration domain after the command. - `@home-assistant add-label needs-more-information` Add a label (needs-more-information, problem in dependency, problem in custom component) to the pull request. - `@home-assistant remove-label needs-more-information` Remove a label (needs-more-information, problem in dependency, problem in custom component) on the pull request.
frenck commented 2 weeks ago

Wouldn't it be better to fix this upstream?

tr4nt0r commented 2 weeks ago

Wouldn't it be better to fix this upstream?

The habitipy library itself is not natively async, it just has an abstraction layer, that allows the usage of aiohttp instead of requests, as backend. I think rewriting the library would be a lot harder, at least for me, as I'm still pretty new to python.