You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

RPyC调用树莓派Bleak时Asyncio事件循环异常求助

远程树莓派上通过RPyC运行Bleak(依赖asyncio)的问题

我正在搭建一套PC与树莓派相连的系统,通过RPyC和Paramiko实现远程连接,多数Python模块均可正常运行。但现在需要集成Bleak进行BLE通信,而Bleak依赖asyncio运行,遇到了如下问题:

第一次尝试:在本地PC创建asyncio事件循环

执行以下代码:

loop = asyncio.new_event_loop()
asyncio.set_event_loop(loop)
loop.run_until_complete(self.establish_connection(communication_address))

其中establish_connection函数定义:

async def establish_connection(self, communication_address: str):
          self.client = self._conn.modules.bleak.BleakClient(communication_address, loop=self.loop,
                                                             winrt=dict(use_cached_services=False))

          await self.client.connect()

出现报错:

E           
E           ========= Remote Traceback (1) =========
E           Traceback (most recent call last):
E             File "/tmp/tmp.kCmsm4m4Xz/rpyc/core/protocol.py", line 359, in _dispatch_request
E               res = self._HANDLERS[handler](self, *args)
E             File "/tmp/tmp.kCmsm4m4Xz/rpyc/core/protocol.py", line 863, in _handle_callattr
E               return self._handle_call(obj, args, kwargs)
E             File "/tmp/tmp.kCmsm4m4Xz/rpyc/core/protocol.py", line 837, in _handle_call
E               return obj(*args, **dict(kwargs))
E             File "/home/pi/.local/lib/python3.9/site-packages/bleak/__init__.py", line 471, in connect
E               return await self._backend.connect(**kwargs)
E             File "/home/pi/.local/lib/python3.9/site-packages/bleak/backends/bluezdbus/client.py", line 108, in connect
E               device = await BleakScanner.find_device_by_address(
E             File "/home/pi/.local/lib/python3.9/site-packages/bleak/__init__.py", line 286, in find_device_by_address
E               return await cls.find_device_by_filter(
E             File "/home/pi/.local/lib/python3.9/site-packages/bleak/__init__.py", line 323, in find_device_by_filter
E               async with cls(detection_callback=apply_filter, **kwargs):
E             File "/home/pi/.local/lib/python3.9/site-packages/bleak/__init__.py", line 126, in __aenter__
E               await self._backend.start()
E             File "/home/pi/.local/lib/python3.9/site-packages/bleak/backends/bluezdbus/scanner.py", line 174, in start
E               manager = await get_global_bluez_manager()
E             File "/home/pi/.local/lib/python3.9/site-packages/bleak/backends/bluezdbus/manager.py", line 890, in get_global_bluez_manager
E               loop = asyncio.get_running_loop()
E           RuntimeError: no running event loop

第二次尝试:在树莓派端创建asyncio事件循环

修改代码为:

loop = self._conn.modules.asyncio.new_event_loop()
self._conn.modules.asyncio.set_event_loop(loop)
loop.run_until_complete(self.establish_connection(communication_address))

出现新报错:

E           ========= Remote Traceback (1) =========
E           Traceback (most recent call last):
E             File "/tmp/tmp.m2HkW3qnwb/rpyc/core/protocol.py", line 359, in _dispatch_request
E               res = self._HANDLERS[handler](self, *args)
E             File "/tmp/tmp.m2HkW3qnwb/rpyc/core/protocol.py", line 837, in _handle_call
E               return obj(*args, **dict(kwargs))
E             File "/usr/local/lib/python3.9/asyncio/base_events.py", line 626, in run_until_complete
E               future = tasks.ensure_future(future, loop=self)
E             File "/usr/local/lib/python3.9/asyncio/tasks.py", line 662, in ensure_future
E               if coroutines.iscoroutine(coro_or_future):
E             File "/usr/local/lib/python3.9/asyncio/coroutines.py", line 182, in iscoroutine
E               if isinstance(obj, _COROUTINE_TYPES):
E             File "/usr/local/lib/python3.9/abc.py", line 119, in __instancecheck__
E               return _abc_instancecheck(cls, instance)
E             File "/usr/local/lib/python3.9/abc.py", line 123, in __subclasscheck__
E               return _abc_subclasscheck(cls, subclass)
E           TypeError: issubclass() arg 1 must be a class

请问有人遇到过类似问题吗?或者有什么方法能让Bleak在远程树莓派上正确运行asyncio?


内容的提问来源于stack exchange,提问作者Linda Ednarsson

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 04:52:16