Как решить проблему: aiohttp + asyncio = TypeError: Constructor parameter should be str

Я новичок и пытаюсь получить коды ответов сайта. Удалось реализовать через requests, но это занимает много времени, чтобы получить около 10 000 страниц. Я пытаюсь сделать асинхронный метод, но получаю ошибку: TypeError: Constructor parameter should be str

Мне нужно получить код ответа типа 200 или 404, чтобы добавить его в таблицу excel.

import asyncio
import time
import aiohttp
import pandas as pd
from openpyxl import load_workbook
import datetime

start = time.time()

# Указываем путь к файлу с ссылками. Ссылки в файле начинаются с ячейки A2 и идут столбцом
wb = load_workbook(filename='Links.xlsx')

# Указываем наименование страницы с ссылками в файле
sheet = wb['Links']

row_count = sheet.max_row

# Заготовки пустых списков на будущее
urls = []
answers = []

# Создание переменной для добавления даты к наименованию итогового файла
date = datetime.datetime.now()

# Формирование списка ссылок для проверки. Перебор начинается со второй ячейки и завершается на последней ячейки
url_number = 0
for i in range(2, row_count + 1):
    urls.append(sheet['A' + str(i)].value)
    url_number += 1
    print('Получение ссылки: ', url_number, 'из ', row_count - 1)


def get_tasks(session):
    tasks = []
    for _ in urls:
        tasks.append(session.get(aiohttp.ClientResponse))
    return tasks


async def get_response_code():
    async with aiohttp.ClientSession() as session:
        tasks = get_tasks(session)
        responses = await asyncio.gather(*tasks)
        for response in responses:
            answers.append(await response)

asyncio.run(get_response_code())

# response = [grequests.get(url) for url in urls]
# resp = grequests.map(response)
#
#
# for num, r in enumerate(resp):
#     answers.append(r.status_code)

# Формирование таблицы со ссылками и кодами ответов
df = pd.DataFrame({
    'LINKS': urls,
    'ANSWERS': answers
})

# Сохранение таблицы без индекса в новый файл. В наименовании файла указана дата формирования
df.to_excel('page response codes ' + date.strftime("%Y.%m.%d") + '.xlsx', index=False)

end = time.time()

print(end - start)

Получаю ошибку:

Traceback (most recent call last):
  File "/Users/levon.osipov/Documents/Projects/lmAsync/main.py", line 47, in <module>
    asyncio.run(get_response_code())
  File "/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/asyncio/runners.py", line 190, in run
    return runner.run(main)
           ^^^^^^^^^^^^^^^^
  File "/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/asyncio/runners.py", line 118, in run
    return self._loop.run_until_complete(task)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/asyncio/base_events.py", line 650, in run_until_complete
    return future.result()
           ^^^^^^^^^^^^^^^
  File "/Users/levon.osipov/Documents/Projects/lmAsync/main.py", line 43, in get_response_code
    responses = await asyncio.gather(*tasks)
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/levon.osipov/Documents/Projects/lmAsync/venv/lib/python3.11/site-packages/aiohttp/client.py", line 1125, in send
    return self._coro.send(arg)
           ^^^^^^^^^^^^^^^^^^^^
  File "/Users/levon.osipov/Documents/Projects/lmAsync/venv/lib/python3.11/site-packages/aiohttp/client.py", line 423, in _request
    url = self._build_url(str_or_url)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/levon.osipov/Documents/Projects/lmAsync/venv/lib/python3.11/site-packages/aiohttp/client.py", line 357, in _build_url
    url = URL(str_or_url)
          ^^^^^^^^^^^^^^^
  File "/Users/levon.osipov/Documents/Projects/lmAsync/venv/lib/python3.11/site-packages/yarl/_url.py", line 154, in __new__
    raise TypeError("Constructor parameter should be str")
TypeError: Constructor parameter should be str

Ответы (0 шт):