关于hassos自定义插件无法使用的问题
2021-04-21 10:53:45 ERROR (MainThread) Error while setting up yunmi_water_heater platform for water_heaterTraceback (most recent call last):
File "/config/custom_components/yunmi_water_heater/water_heater.py", line 217, in yunmi_login
res = requests.get(url, headers=headers)
File "/usr/local/lib/python3.8/site-packages/requests/api.py", line 76, in get
return request('get', url, params=params, **kwargs)
File "/usr/local/lib/python3.8/site-packages/requests/api.py", line 61, in request
return session.request(method=method, url=url, **kwargs)
File "/usr/local/lib/python3.8/site-packages/requests/sessions.py", line 542, in request
resp = self.send(prep, **send_kwargs)
File "/usr/local/lib/python3.8/site-packages/requests/sessions.py", line 655, in send
r = adapter.send(request, **kwargs)
File "/usr/local/lib/python3.8/site-packages/requests/adapters.py", line 439, in send
resp = conn.urlopen(
File "/usr/local/lib/python3.8/site-packages/urllib3/connectionpool.py", line 699, in urlopen
httplib_response = self._make_request(
File "/usr/local/lib/python3.8/site-packages/urllib3/connectionpool.py", line 394, in _make_request
conn.request(method, url, **httplib_request_kw)
File "/usr/local/lib/python3.8/site-packages/urllib3/connection.py", line 234, in request
super(HTTPConnection, self).request(method, url, body=body, headers=headers)
File "/usr/local/lib/python3.8/http/client.py", line 1255, in request
self._send_request(method, url, body, headers, encode_chunked)
File "/usr/local/lib/python3.8/http/client.py", line 1266, in _send_request
self.putrequest(method, url, **skips)
File "/usr/local/lib/python3.8/site-packages/urllib3/connection.py", line 214, in putrequest
return _HTTPConnection.putrequest(self, method, url, *args, **kwargs)
File "/usr/src/homeassistant/homeassistant/util/async_.py", line 150, in protected_loop_func
check_loop()
File "/usr/src/homeassistant/homeassistant/util/async_.py", line 139, in check_loop
raise RuntimeError(
RuntimeError: I/O must be done in the executor; Use `await hass.async_add_executor_job()` at custom_components/yunmi_water_heater/water_heater.py, line 217: res = requests.get(url, headers=headers)在docker环境中可以正常使用,但在202104版的hassos里提示改错误,按提示添加代码依旧无法启动该插件,请问下哪位大佬清楚原因。源码见附件
HA 升级版本所致,等待插件更新吧 jyz_0501 发表于 2021-4-21 22:30
HA 升级版本所致,等待插件更新吧
我就是插件作者 哈哈。 没看明白怎么改。。。 对python不是很熟悉。 wen_jxpx 发表于 2021-4-22 09:01
我就是插件作者 哈哈。 没看明白怎么改。。。 对python不是很熟悉。
哈哈 ,好尴尬, 最近是有这个问题,我峥果浴霸也是这个错误await hass.async_add_executor_job() jyz_0501 发表于 2021-4-22 09:46
哈哈 ,好尴尬, 最近是有这个问题,我峥果浴霸也是这个错误await hass.async_add_executor_job() ...
按提示 改成async方法 并加协成作业,报错是不会了,但是日志打不出来,插件也不可用,感觉上就是一直在等待这个作业执行,并没有进行下一步。 import aiohttp
...
async def asyncGet(url, headers):
async with aiohttp.ClientSession(headers=headers) as session:
async with session.get(url) as response:
_LOGGER.info('res: ' + str(response.status))
html = await response.text()
_LOGGER.info('html: ' + str(html))
return html
async def yunmi_login(self):
...
res_list = json.loads(await asyncGet(url, headers))
...
async def update(self):
...
await self.yunmi_login()
...
大概这么个意思 试试看 我自己用的按照这个思路改了是正常了 jyz_0501 发表于 2021-4-22 09:46
哈哈 ,好尴尬, 最近是有这个问题,我峥果浴霸也是这个错误await hass.async_add_executor_job() ...
我jio着应该这么回复:
哈哈,那你就赶快更新;P XCray 发表于 2021-5-28 06:20
我jio着应该这么回复:
哈哈,那你就赶快更新
实在更新不动,ha底层多线程协同机制有变化。 zcw159357 发表于 2021-5-28 04:51
import aiohttp
...
回头试试看。谢谢。 zcw159357 发表于 2021-5-28 04:51
import aiohttp
...
试了下,不行。因为我有跨类调用。主要是加了async,调试都很麻烦。。。
页:
[1]
2