import aiohttp
import asyncio
from scripts import config
URL = f'http://xmlriver.com/search/xml?user={config.USERID}&key={config.USERKEY}&groupby=100&country=2376&lr=IW&domain=65&device=desktop&query='
keywords = ['start', 'stop', 'test', 'experimental']
urls = [
'http://xmlriver.com/search/xml?user={}&key={}&groupby=100&country=2376&lr=IW&domain=65&device=desktop&query={}'.format(
config.USERID, config.USERKEY, keyword
) for keyword in keywords
]
async def boundFetch(semaphore, url):
async with semaphore:
async with aiohttp.ClientSession() as session:
async with session.get(url) as response:
print('1')
await asyncio.sleep(0.1)
await response.text()
print('2')
async def main():
limit = asyncio.BoundedSemaphore(value=config.LIMIT)
tasks = [boundFetch(limit, url) for url in urls]
await asyncio.wait(tasks)
loop = asyncio.get_event_loop()
loop.run_until_complete(main())
loop.close()
вот собственно есть код, он выдает
1
2
1
2
1
2
1
2
а иногда
1
1
2
2
1
1
2
2
вопрос, почему одинаковый код выдает разный аутпут? это как вообще такое может происхдоить?
а еще если, в asyncio.wait поставить например 2 секунды, то все всегда работает как надо