Aiogram: RuntimeError: There is no current event loop in thread 'Thread-2'
Есть три потока, в одном из них я хочу поллинг запускать. Код:
import datetime
import json
from tkinter import *
import time
from threading import Thread
def new_config(event):
data = {'key' : key.get()}
chars = ['-', ' ', ':']
date = str(datetime.datetime.today())[:-7]
for char in chars:
date = date.replace(char, '_')
filename = name.get() + date
with open(filename + '.json', 'w') as file:
json.dump(data, file)
class Storage():
def __init__(self):
self.is_working = False
storage = Storage()
def waiter():
while storage.is_working == False:
log['text'] = 'Starting.'
time.sleep(0.5)
log['text'] = 'Starting..'
time.sleep(0.5)
log['text'] = 'Starting...'
time.sleep(0.5)
log['text'] = 'Program log:'
def run(event):
thread1 = Thread(target=waiter)
thread1.start()
if __name__ == '__main__':
root = Tk()
open_button = Button(text="Оpen project")
open_button.pack()
save_button = Button(text="Save")
save_button.pack()
save_button.bind('<Button-1>', new_config)
name = Entry(width=20)
name.pack()
status = Label(width=20, text='API key:', bg='#4CAF50', fg = 'white')
status.pack()
key = Entry(width=20)
key.pack()
run_button = Button(text="Start")
run_button.pack()
run_button.bind('<Button-1>', run)
log = Label(bg='#388E3C', fg='white', width=80, height=20)
log.pack()
root.configure(bg='#4CAF50')
root.mainloop()
Но после попытки выдаёт ошибку:
Exception in thread Thread-2:
Traceback (most recent call last):
File "C:\Users\1\AppData\Local\Programs\Python\Python39\lib\threading.py", line 950, in _bootstrap_inner
self.run()
File "C:\Users\1\AppData\Local\Programs\Python\Python39\lib\threading.py", line 888, in run
self._target(*self._args, **self._kwargs)
File "C:\Users\1\Desktop\TextoBOT\newfile.pyw", line 47, in bot_polling
executor.start_polling(dp, skip_updates=True)
File "C:\Users\1\AppData\Local\Programs\Python\Python39\lib\site-packages\aiogram\utils\executor.py", line 41, in start_polling
executor.start_polling(reset_webhook=reset_webhook, timeout=timeout, relax=relax, fast=fast)
File "C:\Users\1\AppData\Local\Programs\Python\Python39\lib\site-packages\aiogram\utils\executor.py", line 306, in start_polling
loop: asyncio.AbstractEventLoop = self.loop
File "C:\Users\1\AppData\Local\Programs\Python\Python39\lib\site-packages\aiogram\utils\executor.py", line 150, in loop
return getattr(self, "_loop", asyncio.get_event_loop())
File "C:\Users\1\AppData\Local\Programs\Python\Python39\lib\asyncio\events.py", line 642, 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-2'.
Ответы (1 шт):
Автор решения: Yakov
→ Ссылка
у тебя в втором потоке нет цикла ввода/вывода, наталкивался на эту же ошибку на винде. при запуске еще одного потока в службе.
Помог след. код.
from asyncio import new_event_loop, set_event_loop
set_event_loop(new_event_loop())