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())
→ Ссылка