bluez: Create a bluez manager instance per-event-loop #1034
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.
Alternative to #1031. Avoids "got Future attached to a different loop" if Bleak instances with BlueZ backend are constructed in context of more than one event loop (for example, in default configuration of pytest-asyncio).
Also enables parallel access to Bleak instances from multiple event loops, provided the same Bleak object is not shared between two event loops. Each backend manager instance establishes an independent dbus connection with a unique dbus address.
Some quick code that demonstrates using Bleak in parallel from multiple threads (and therefore multiple event loops):
There is also a simple pytest-asyncio case in PR #1031 that fails without this patch and passes with this patch.