У меня есть такой код:
async def worker(self):
while True:
proxies = get_proxies()
for proxy in proxies:
await self.add_proxy_to_queue(proxy)
async def add_proxy_to_queue(self, proxy):
while self.proxies_semaphore.locked():
await asyncio.sleep(0.001)
asyncio.ensure_future(self.process_proxy(proxy))
async def process_proxy(self, proxy):
async with self.proxies_semaphore:
# send network request and wait for the resposne with timeout
Я изменил его так:
async def worker(self):
while True:
proxies = get_proxies()
for proxy in proxies:
await self.add_proxy_to_queue(proxy)
async def add_proxy_to_queue(self, proxy):
async with self.proxies_semaphore: # <-- HERE ARE THE CHANGES
asyncio.ensure_future(self.process_proxy(proxy))
async def process_proxy(self, proxy):
async with self.proxies_semaphore:
# send network request and wait for the resposne with timeout
и он все еще протекает, но гораздо медленнее.
Что я делаю не так и как отлаживать асинхронный код, как, скажем, заглянуть внутрь цикла обработки событий и увидеть, какие задачи на самом деле существуют?