import aiohttp
import asyncio
import config
from bs4 import BeautifulSoup
URL = f'http://xmlriver.com/search/xml?user={config.USERID}&key={config.USERKEY}&groupby=100&loc=1007989&country=2376&lr=IW&domain=65&device=desktop&query='
keywords = ['start', 'test', 'demo']
results = []
async def fetch(query):
async with aiohttp.ClientSession() as session:
async with session.get(URL + query) as r:
if r.status == 200:
return await r.text()
else:
raise ConnectionError()
async def getUrl(semaphore):
semaphore.acquire()
print('1')
# soup = BeautifulSoup(await fetch(query=query), 'html.parser')
await asyncio.sleep(2)
# print(str(soup.find_all('url')).replace('<url>', '').replace('</url>', ''))
print('2')
semaphore.release()
async def main():
limit = asyncio.Semaphore(value=2)
await asyncio.wait([getUrl(limit), getUrl(limit), getUrl(limit)])
loop = asyncio.get_event_loop()
loop.run_until_complete(main())
на выходе:
1
1
1
2
2
2
Почему происходит так, ведь я явно указал в семафоре, что сначала выполняется 2 две функции?