при парсинге бот отвечает с огромной задержкой

Рейтинг: 0Ответов: 0Опубликовано: 18.02.2023

сделал пару функций на получение курса валюты

код:

from app.bot import handler
from other_cmd import digit, digit_convert, number_to_emoji
from bs4 import BeautifulSoup
import aiohttp
from decimal import Decimal
from datetime import datetime
from app.models import Backpack


async def dollar_to_rub():
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36'}
    url = 'https://www.google.com/search?q=%D0%BA%D1%83%D1%80%D1%81+%D0%B4%D0%BE%D0%BB%D0%BB%D0%B0%D1%80%D0%B0&oq=%D0%BA%D1%83%D1%80%D1%81+&aqs=chrome.0.69i59j69i57j0i131i433i512l2j69i59l2j69i61l2.2657j0j9&sourceid=chrome&ie=UTF-8'
    async with aiohttp.ClientSession() as session:
        response = await session.get(url=url, headers=headers)
        soup = BeautifulSoup(await response.text(), 'html.parser')
        dollar_currency = soup.findAll(
            'span', {'class': 'DFlfde SwHCTb', 'data-precision': '2'})

    return Decimal(dollar_currency[0].text.replace(',', '.'))


async def euro_to_rub():
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36'}
    url = 'https://www.google.com/search?q=%D0%BA%D1%83%D1%80%D1%81+%D0%B5%D0%B2%D1%80%D0%BE&oq=%D0%BA%D1%83%D1%80%D1%81+%D0%B5%D0%B2&aqs=chrome.1.69i57j0i131i433i512l3j0i512j0i131i433i512j0i512j0i433i512l2j0i3.2916j1j7&sourceid=chrome&ie=UTF-8'

    async with aiohttp.ClientSession() as session:
        response = await session.get(url=url, headers=headers)
        soup = BeautifulSoup(await response.text(), 'html.parser')
        euro_currency = soup.findAll(
            'span', {'class': 'DFlfde SwHCTb', 'data-precision': '2'})

    return Decimal(euro_currency[0].text.replace(',', '.'))


async def btc_to_rub():
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36'}
    url = 'https://www.google.com/search?q=%D0%BA%D1%83%D1%80%D1%81+%D0%B1%D0%B8%D1%82%D0%BA%D0%BE%D0%B8%D0%BD%D0%B0&oq=%D0%BA%D1%83%D1%80%D1%81+%D0%B1%D0%B8%D1%82%D0%BA&aqs=chrome.0.0i131i433i512j0i512j69i57j0i512j0i433i512j0i512l5.4321j1j7&sourceid=chrome&ie=UTF-8'

    async with aiohttp.ClientSession() as session:
        response = await session.get(url=url, headers=headers)
        soup = BeautifulSoup(await response.text(), 'html.parser')
        btc_currency = soup.findAll('span', {'class': 'pclqee'})
        btc_currency = btc_currency[0].text
        btc_currency = btc_currency.split()
        btc_currency = ''.join(btc_currency)

    return Decimal(btc_currency.replace(',', '.'))


async def birza(user):
    do = datetime.now()
    print(await dollar_to_rub())
    print(13)
    
    text = f'{user.mention()}, биржа\n\n'

    text += 'Валюты: \n\n'
    text += f'{await number_to_emoji(1)} Доллар >> {await dollar_to_rub()}₽\n'
    text += f'{await number_to_emoji(2)} Евро >> {await euro_to_rub()}₽\n'

    text += '\n\nКриптовалюты: \n\n'
    text += f'{await number_to_emoji(3)} Биткоин >> {digit(await btc_to_rub())}₽\n\n'
    text += '🔹 Купить » биржа купить [номер] [кол-во]\n'
    text += '🔸 Продать » биржа продать[номер][кол-во]\n'

    await user.reply(text,
                     keyboard=[[
                         {'label': '💼 Портфель', 'type': 'text', 'color': 'secondary',
                          'payload': {'payload': 'портфель'}}
                     ]], inline=True)

    await user.reply(f'Парсинг занял >> {datetime.now() - do}')

после ответа бот вывел сколько ему понадобилось времени для обработки, ответ: Парсинг занял » 0:08:45.958442

Озу 2 гб, 1 ядро

Ответы

Ответов пока нет.