у меня есть класс АвитоПарсер, вот как он описан:
class AvitoParcer:
def __init__(self):
self.dirct = os.getcwd() + '/chromedriver.exe'
self.options = webdriver.ChromeOptions()
self.driver = webdriver.Chrome(executable_path=self.dirct, options=self.options)
self.driver.get('https://www.avito.ru')
при вводе в определенный state, я вызываю этот класс и циклом while true жду пока появится новое объявление, то есть время выкладывания первого объявления не станет несколько секунд назад или 1 минуту назад. я понимаю что я делаю неправильно, используя while true, ведь пока выполняется этот цикл, все остальное как бы замораживается, while true блокирует все остальное. хотелось бы узнать, как правильно сделать такую прогонку сайта, чтобы в любой момент ее можно было остановить сообщением в телеграме.
вот моя блокирующая проверка
async def checker_start(msg: types.Message, state: FSMContext):
if msg.text.title() == 'Да':
parser = AvitoParcer()
await FSMAd.ad.set()
while True:
parser.update_page()
date = parser.get_time()
if date == '1 минуту назад' or date == 'Несколько секунд назад' or date == '2 минуты назад':
date = parser.get_time()
name = parser.get_name()
desc = parser.get_desc()
image_url = parser.get_image_url()
url = parser.get_url()
price = parser.get_price()
await bot.send_photo(
msg.from_user.id,
caption=f'Найдено новое объявление. Выложено:{date}\n'
f'{name}\n'
f'{desc}\n'
f'{price}\n'
f'ссылка - {url}', photo=f'{image_url}')