Używam asyncio
i pięknego aiohttp
. Główną ideą jest to, że wysyłam żądanie do serwera (zwraca linki), a następnie chcę pobierać pliki ze wszystkich łączy w równolegle (coś jak w example).Dlaczego otrzymuję komunikat "Zadanie zostało zniszczone, ale oczekuje" w asynuencie Pythona?
Kod:
import aiohttp
import asyncio
@asyncio.coroutine
def downloader(file):
print('Download', file['title'])
yield from asyncio.sleep(1.0) # some actions to download
print('OK', file['title'])
def run():
r = yield from aiohttp.request('get', 'my_url.com', True))
raw = yield from r.json()
tasks = []
for file in raw['files']:
tasks.append(asyncio.async(downloader(file)))
asyncio.wait(tasks)
if __name__ == '__main__':
loop = asyncio.get_event_loop()
loop.run_until_complete(run())
Ale gdy próbuję go uruchomić, mam wiele "Pobierz ..." wyjścia i
Task was destroyed but it is pending!
I nic o 'OK + nazwa pliku'.
Jak mogę to naprawić?
Wielkie dzięki za miłą odpowiedź – tim