Tôi sử dụng asyncio
và đẹp aiohttp
. Ý tưởng chính là tôi yêu cầu máy chủ (nó trả về liên kết) và sau đó tôi muốn tải xuống tệp từ tất cả các liên kết trong song song (giống như trong một example).Tại sao tôi nhận được lỗi "Tác vụ đã bị hủy nhưng đang chờ xử lý" trong Python asyncio?
Code:
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())
Tuy nhiên, khi tôi cố gắng chạy nó, tôi có nhiều "Tải ..." đầu ra và
Task was destroyed but it is pending!
Và gì về 'OK + filename'.
Tôi làm cách nào để khắc phục điều đó?
Rất cám ơn vì câu trả lời hay – tim