У меня есть простой Python Tkinter GUI с парой кнопок. Когда я нажимаю кнопку, все, что я хочу сделать, это запустить соединение через веб-сокет и начать получать. Я могу запустить код нормально, но как только я пытаюсь поместить его в поток, я получаю ошибки
RuntimeError: There is no current event loop in thread
Итак, сначала попробуйте:
import websockets
websocket = websockets.connect(uri, ssl = True)
websocket.recv()
Я получаю ошибку
"Connect object has no attribute 'recv'"
Что странно, когда я запускаю его по-другому, я не получаю эту ошибку, когда точно следую документации
def run_websockets2(self):
async def hello():
uri = Websocket_Feed
# with websockets.connect(uri, ssl=True) as websocket:
socket = await websockets.connect(uri, ssl=True)
self.web_socket = socket
while self.running:
greeting = await socket.recv()
print(f"< {greeting}")
asyncio.get_event_loop().run_until_complete(hello())
Она работает, пока я просто вызываю "websockets2 ()". Но если я пытаюсь сделать
self.websocket_thread = threading.Thread(target=self.run_websockets2, args=())
self.websocket_thread.start()
, я получаю ошибку
RuntimeError: There is no current event loop in thread 'web_sockets'
И когда я делаю всю функцию не асинхронной, я получаю ошибку
def run_websockets(self):
uri = Websocket_Feed
# with websockets.connect(uri, ssl=True) as websocket:
socket = websockets.connect(uri, ssl=True)
self.web_socket = socket
while self.running:
greeting = socket.recv()
print(f"< {greeting}")
Я получаю ошибку RuntimeError: в потоке 'web_sockets' нет текущего цикла событий. on socket = websockets.connect (uri, ssl = True)
Я не понимаю, почему я не могу просто запустить эти не асинхронные в потоке. Любая помощь с благодарностью