RuntimeError: There is no current event loop in thread 'Thread-1'
See original GitHub issue👋 I’m trying to run the demo code from the docs. I’ve done the following:
$ python3 --version
Python 3.8.5
$ python3 -m venv .env
$ source .env/bin/activate
$ pip install meross-iot --upgrade --no-cache
$ pbpaste > main.py
$ # ... Edit the email and password
$ python main.py
Here’s the content of the python file, sans credentials:
main.py
import asyncio
import os
from meross_iot.http_api import MerossHttpClient
from meross_iot.manager import MerossManager
EMAIL = os.environ.get('MEROSS_EMAIL') or "XXX"
PASSWORD = os.environ.get('MEROSS_PASSWORD') or "XXX"
async def main():
# Setup the HTTP client API from user-password
http_api_client = await MerossHttpClient.async_from_user_password(email=EMAIL, password=PASSWORD)
# Setup and start the device manager
manager = MerossManager(http_client=http_api_client)
await manager.async_init()
# Discover devices.
await manager.async_device_discovery()
meross_devices = manager.find_devices()
# Print them
print("I've found the following devices:")
for dev in meross_devices:
print(f"- {dev.name} ({dev.type}): {dev.online_status}")
# Close the manager and logout from http_api
manager.close()
await http_api_client.async_logout()
if __name__ == '__main__':
# On Windows + Python 3.8, you should uncomment the following
# asyncio.set_event_loop_policy(asyncio.WindowsSelectorEventLoopPolicy())
loop = asyncio.get_event_loop()
loop.run_until_complete(main())
loop.close()
And the resulting error logs. Weirdly, it can see my devices, but unable to read or control them:
stdout
INFO:Initializing the MQTT connection...
INFO:Subscribed to topics, updating state for already known devices...
INFO:
------- Triggering HTTP discovery, filter_device: None -------
INFO:The following devices were already known to me: {}
INFO:The following devices are new to me: [<meross_iot.model.http.device.HttpDeviceInfo object at 0x10dc76f40>, <meross_iot.model.http.device.HttpDeviceInfo object at 0x10dc76d60>, <meross_iot.model.http.device.HttpDeviceInfo object at 0x10dc76d90>, <meross_iot.model.http.device.HttpDeviceInfo object at 0x10dc76e50>, <meross_iot.model.http.device.HttpDeviceInfo object at 0x10dc76df0>, <meross_iot.model.http.device.HttpDeviceInfo object at 0x10dc76eb0>, <meross_iot.model.http.device.HttpDeviceInfo object at 0x10dc76f70>]
INFO:Updating 0 known devices form HTTPINFO and fetching data from 7 newly discovered devices...
INFO:Could not retrieve abilities for device Bed plug (1908305402074839089548e1e9511c2a). This device won't be enrolled.
INFO:Could not retrieve abilities for device Vacuum charger (19010823789142251a1334298f146aa0). This device won't be enrolled.
ERROR:Timeout occurred while waiting a response for message b'{"header": {"from": "/app/370946-477270b7d9385da9e9913541aad05092/subscribe", "messageId": "cc6ef0b10f561934303fadd0e52ed0a9", "method": "GET", "namespace": "Appliance.System.Ability", "payloadVersion": 1, "sign": "7e09343847116cee89c853e2309393bd", "timestamp": 1600969659}, "payload": {}}' sent to device uuid 19121877533782251h2848e1e913e310. Timeout was: 5.0 seconds
ERROR:Failed to retrieve abilities for device Main fan (19121877533782251h2848e1e913e310). This device won't be enrolled.
ERROR:Timeout occurred while waiting a response for message b'{"header": {"from": "/app/370946-477270b7d9385da9e9913541aad05092/subscribe", "messageId": "e6dda6dd91d2e57bdb27ee3e34f0558a", "method": "GET", "namespace": "Appliance.System.Ability", "payloadVersion": 1, "sign": "073d5eadfd4838b5ec4292630dd30b4c", "timestamp": 1600969659}, "payload": {}}' sent to device uuid 19121824471830251h2848e1e913e463. Timeout was: 5.0 seconds
ERROR:Failed to retrieve abilities for device Desk fan (19121824471830251h2848e1e913e463). This device won't be enrolled.
ERROR:Timeout occurred while waiting a response for message b'{"header": {"from": "/app/370946-477270b7d9385da9e9913541aad05092/subscribe", "messageId": "53d875535e2d48c5607bc7be0d7cd40d", "method": "GET", "namespace": "Appliance.System.Ability", "payloadVersion": 1, "sign": "8543757cb13c44bd5b315ea7e245ecb8", "timestamp": 1600969659}, "payload": {}}' sent to device uuid 19091244678221251h1848e1e904527f. Timeout was: 5.0 seconds
ERROR:Failed to retrieve abilities for device Control panel (19091244678221251h1848e1e904527f). This device won't be enrolled.
ERROR:Timeout occurred while waiting a response for message b'{"header": {"from": "/app/370946-477270b7d9385da9e9913541aad05092/subscribe", "messageId": "5b139c36ca635ee1a3f80dec9a5b6bc5", "method": "GET", "namespace": "Appliance.System.Ability", "payloadVersion": 1, "sign": "68f6964755c7e64f9cfb3897cd915d22", "timestamp": 1600969659}, "payload": {}}' sent to device uuid 19091228424117251h1848e1e9045294. Timeout was: 5.0 seconds
ERROR:Failed to retrieve abilities for device Living room shelf (19091228424117251h1848e1e9045294). This device won't be enrolled.
ERROR:Timeout occurred while waiting a response for message b'{"header": {"from": "/app/370946-477270b7d9385da9e9913541aad05092/subscribe", "messageId": "bdc91eabcf7b0cacf2150a294bf65129", "method": "GET", "namespace": "Appliance.System.Ability", "payloadVersion": 1, "sign": "658edb4c8c5b6e64d041e66826fbdae0", "timestamp": 1600969659}, "payload": {}}' sent to device uuid 1911115584535990804948e1e9115f50. Timeout was: 5.0 seconds
ERROR:Failed to retrieve abilities for device Desk speakers (1911115584535990804948e1e9115f50). This device won't be enrolled.
INFO:Fetch and update done
INFO:
------- HTTP discovery ended -------
I've found the following devices:
INFO:Disconnecting from mqtt
INFO:MQTT Client has fully disconnected.
INFO:Logout succeeded.
stderr
Exception in thread Thread-1:
Traceback (most recent call last):
File "/usr/local/Cellar/python@3.8/3.8.5/Frameworks/Python.framework/Versions/3.8/lib/python3.8/threading.py", line 932, in _bootstrap_inner
self.run()
File "/usr/local/Cellar/python@3.8/3.8.5/Frameworks/Python.framework/Versions/3.8/lib/python3.8/threading.py", line 870, in run
self._target(*self._args, **self._kwargs)
File "/Users/danhughes/src/github.com/dan1elhughes/casa/services/service.meross/.env/lib/python3.8/site-packages/paho/mqtt/client.py", line 3452, in _thread_main
self.loop_forever(retry_first_connection=True)
File "/Users/danhughes/src/github.com/dan1elhughes/casa/services/service.meross/.env/lib/python3.8/site-packages/paho/mqtt/client.py", line 1779, in loop_forever
rc = self.loop(timeout, max_packets)
File "/Users/danhughes/src/github.com/dan1elhughes/casa/services/service.meross/.env/lib/python3.8/site-packages/paho/mqtt/client.py", line 1181, in loop
rc = self.loop_read(max_packets)
File "/Users/danhughes/src/github.com/dan1elhughes/casa/services/service.meross/.env/lib/python3.8/site-packages/paho/mqtt/client.py", line 1572, in loop_read
rc = self._packet_read()
File "/Users/danhughes/src/github.com/dan1elhughes/casa/services/service.meross/.env/lib/python3.8/site-packages/paho/mqtt/client.py", line 2310, in _packet_read
rc = self._packet_handle()
File "/Users/danhughes/src/github.com/dan1elhughes/casa/services/service.meross/.env/lib/python3.8/site-packages/paho/mqtt/client.py", line 2944, in _packet_handle
return self._handle_suback()
File "/Users/danhughes/src/github.com/dan1elhughes/casa/services/service.meross/.env/lib/python3.8/site-packages/paho/mqtt/client.py", line 3150, in _handle_suback
self.on_subscribe(
File "/Users/danhughes/src/github.com/dan1elhughes/casa/services/service.meross/.env/lib/python3.8/site-packages/meross_iot/manager.py", line 349, in _on_subscribe
results = asyncio.gather(*tasks)
File "/usr/local/Cellar/python@3.8/3.8.5/Frameworks/Python.framework/Versions/3.8/lib/python3.8/asyncio/tasks.py", line 749, in gather
loop = events.get_event_loop()
File "/usr/local/Cellar/python@3.8/3.8.5/Frameworks/Python.framework/Versions/3.8/lib/python3.8/asyncio/events.py", line 639, in get_event_loop
raise RuntimeError('There is no current event loop in thread %r.'
RuntimeError: There is no current event loop in thread 'Thread-1'.
Thank you for your time, and for this library 🙇
Issue Analytics
- State:
- Created 3 years ago
- Reactions:1
- Comments:15 (2 by maintainers)
Top Results From Across the Web
RuntimeError: There is no current event loop in thread in ...
If the target callable is not a coroutine function, it will be run in a worker thread (due to historical reasons), hence the...
Read more >How to fix Python asyncio RuntimeError: There is no current ...
You are trying to run asyncio.get_event_loop() in some thread other than the main thread – however, asyncio only generates an event loop for...
Read more >There is no current event loop in thread 'Thread-1 ... - GitHub
I have this code: #!/usr/bin/env python3 import threading import tornado.ioloop import tornado.web from tornado import gen class ...
Read more >runtimeerror: there is no current event loop in thread - You.com
1. Threads do not have an event loop, you simply need to use the main thread loop. t = Thread (target=run, args= [client ......
Read more >Mastering asyncio — Telethon 1.26.1 documentation
Since Python 3.5, it is convenient to work with asynchronous code. ... RuntimeError: There is no current event loop in thread 'Thread-1'.
Read more >
Top Related Medium Post
No results found
Top Related StackOverflow Question
No results found
Troubleshoot Live Code
Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start Free
Top Related Reddit Thread
No results found
Top Related Hackernoon Post
No results found
Top Related Tweet
No results found
Top Related Dev.to Post
No results found
Top Related Hashnode Post
No results found
Thanks @christianbrinch !
I was just about to report this issue myself. I have two Raspberry pi’s, a model 3 and a model 3B. They both run Python 3.7.3 and meross_iot 0.4.0.3. The script posted above by @dan1elhughes works as expected on the RPi3, but fails with the runtime error on the RPi3B.
EDIT: I just realized that the RPi3 was running paho-mqtt==1.5.0, while the RPi3B has paho-mqtt==1.5.1. Downgrading the installation on the RPi3B to version 1.5.0 solved the problem.