Python 多线程无当前事件循环

Python Multithreading no current event loop

仅当未从 validate() 调用 fetch() 时,我的线程才能正常工作。但在下面的这种情况下 returns

RuntimeError: 线程中没有当前事件循环

在所有线程 0 - 99 中,我在这里做错了什么?

from threading import Thread
import requests
from bs4 import BeautifulSoup
from requests_html import HTMLSession

def fetch():
    #fetch data from another site
    session = HTMLSession()
    url='http://url'
    data = session.get(url)
    data.html.render()
    content = data.html.html
    soup = BeautifulSoup(content, "html.parser")
    iban = soup.find('p',{"id":"demo"})
    return result.text

def validate():    
    url = "https://url"
    payload = {
        "data" : fetch(),
        "veto" : "fi"
    }
    response = requests.post(url, data=payload)
    soup = BeautifulSoup(response.text, "html.parser")
    data = soup.body.find(text='contact')
    if(data):
        print (data)
    else:
        print ("no data")

if __name__ == "__main__":
    threads = []
    for i in range(100):
        # We start one thread per url present.
        process = Thread(target=validate)
        process.start()
        threads.append(process)

通过快速搜索错误,我发现 this Github issue 似乎显示了您的问题及其解决方案。

看起来您需要使用 asyncio,并且在每个 运行 线程的开头,调用 asyncio.set_event_loop(asyncio.new_event_loop()).