Python(运行时错误:事件循环已关闭)asyncio&;异步问题
我发现很难理解为什么我的代码不起作用。我已在此处附上回溯: 在:回溯(最近一次调用上次):文件中忽略异常 “C:\Program Files\Python38\lib\asyncio\proactor\u events.py”,第116行, 在del中 self.close()文件“C:\Program Files\Python38\lib\asyncio\proactor\u events.py”,第108行,关闭 self.\u loop.call\u soon(self.\u call\u connection\u lost,None)文件“C:\Program Files\Python38\lib\asyncio\base\u events.py”,第711行,in 快给你打电话 self.\u check\u closed()文件“C:\Program Files\Python38\lib\asyncio\base\u events.py”,第504行,在\u check\u closed中 raise RUNTIMERROR('事件循环已关闭')运行时错误:事件循环已关闭 以下是相应的代码:Python(运行时错误:事件循环已关闭)asyncio&;异步问题,python,python-asyncio,aiohttp,Python,Python Asyncio,Aiohttp,我发现很难理解为什么我的代码不起作用。我已在此处附上回溯: 在:回溯(最近一次调用上次):文件中忽略异常 “C:\Program Files\Python38\lib\asyncio\proactor\u events.py”,第116行, 在del中 self.close()文件“C:\Program Files\Python38\lib\asyncio\proactor\u events.py”,第108行,关闭 self.\u loop.call\u soon(self.\u call\u
import asyncio,random,re
import aiofiles
from aiohttp import ClientSession
Headers = {
"User-Agent":
"Mozilla/5.0 (Windows NT 6.1; rv:57.0) Gecko/20100101 Firefox/57.0"
}
async def fetch(url):
try:
async with ClientSession() as session:
async with session.get(url,headers=Headers) as response:
sa = []
sip = await re.findall('((https?):((//)|(\\\\))+[\w\d:#@%/;$()~_?\+-=\\\.&]*)', html)
for i in sip:
o = i[0].split("/")
if (o[0] + '//' + o[2]) in sa:
pass
else:
sa.append(o[0] + '//' + o[2])
print('[>>]', (o[0] + '//' + o[2]))
async with aiofiles.open('result.txt', mode='a') as f:
await f.write((o[0] + '//' + o[2])+"\n")
pass
return await response.read()
except:
pass
async def bound_fetch(sem, url):
# Getter function with semaphore.
async with sem:
await fetch(url)
async def run():
combo = "keys.txt"#input("Enter Combo : ")
tasks = []
Threads = 100#input("Enter Threads : ")
sem = asyncio.Semaphore(int(Threads))
async with aiofiles.open(combo, mode='r') as f:
async for line in f:
line = line.replace("\n","")
task = asyncio.ensure_future(bound_fetch(sem, "https://www.bing.com/search?q={}&count=50&first=50".format(line)))
tasks.append(task)
await asyncio.gather(*tasks)
asyncio.run(run())