Использование нескольких асинхронных с self.session в качестве сеанса в AIOHTTP - PullRequest
0 голосов
/ 07 ноября 2019

У меня есть два async with self.session as session (по одному на каждый метод) и self.session is defined as aiohttp.ClientSession() in def __init__(self). Одним из них является получение всех URL-ссылок на странице, а другим - получение конкретной информации из этих URL-ссылок.

async def fetch(self, session, url):
    async with session.post(url) as response:
        return await response.text()

async def request(self, index_url):
    async with self.session as session:
        result = await self.fetch(session, index_url)
        page_find = re.findall(r'https:\/\/website\.com\/\d+\/\d+\/\w+(?:-\w+)+', result)
        formatted_url_links = list(dict.fromkeys(page_find))
        ...
        ...
        ...

async def get_information(self):
    del self.song_information [:]
    async with self.session as session:
        for url in self.url_links:
            information_database = await self.fetch(session, url)

            soup = BeautifulSoup(information_database)
            ...
            ...
            ...

Каждый метод работает, когда я запускаю их по одной в async def main(). , но когда я запускаю их одну за другой, это выдает мне эту ошибку.

raise RuntimeError('Session is closed')

Мое намерение состоит в том, чтобы пользователь ввел index_url, а затем вставил в него ссылки URL для информации. Можно ли запустить два async with self.session as session одновременно?

...