fix: never create a new asyncio loop #310
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Always reuse the existing asyncio loop rather than creating a new one.
This is needed to upgrade python-roborock in Home Assistant since the async shutdown call must happen in the same asyncio loop that was used to create the client.
This requires inlining all calls to get the currently running loop, because the constructor for the MQTT client needs to be created from outside the asyncio loop because the MQTT client does blocking I/O in the constructor. (example: home-assistant/core#124266). In the future we can move this back to the constructor, but that requires separately creating the MQTT client in a way that doesn't block, which we can do in the future when using a shared MQTT client as proposed by @Lash-L.