У меня есть простой веб-браузер python3, который работал синхронно. Я хотел сделать его асинхронным, поэтому немного его изменил. Но программа не выполняет итерацию по распакованному списку [(,), (,), (,), ...]
даже после преобразования его в преобразование в итеративный список с помощью iter (). Говорит TypeError: 'list_iterator' object is not async iterable
.
Поскольку мой код большой, и я все еще изучаю асинхронное программирование, я помещу основные части здесь с ошибкой.
Моей целью было асинхронное получение ссылок для ускорения процесса. Есть ли способ решить эту проблему?
Код:
import requests as req
from bs4 import BeautifulSoup as bs
import os
import asyncio
from aiostream import stream, pipe
myList = []
def get_myList():
"""
Append values to myList in the format [(,), (,), (,), ...]
"""
async def download(link, title):
# Download a page
try:
page = await req.get(link)
# Process with BeautifulSoup
pass
except:
pass
async def main():
get_myList()
min_iterList = iter(myList[:])
stream.starmap(min_iterList, download, ordered=True, task_limit=10)
if __name__=="__main__":
freeze_support()
loop = asyncio.get_event_loop()
loop.run_until_complete(main())
loop.close()
Ошибка:
Traceback (most recent call last):
File "async_update_code.py", line 253, in <module>
loop.run_until_complete(main())
File "/usr/lib/python3.6/asyncio/base_events.py", line 468, in run_until_complete
return future.result()
File "async_update_code.py", line 207, in main
stream.starmap(min_iterList, download, ordered=True, task_limit=10)
File "/home/yahyaa/.local/lib/python3.6/site-packages/aiostream/core.py", line 273, in init
assert_async_iterable(args[0])
File "/home/yahyaa/.local/lib/python3.6/site-packages/aiostream/aiter_utils.py", line 56, in assert_async_iterable
f"{type(obj).__name__!r} object is not async iterable")
TypeError: 'list_iterator' object is not async iterable