Асинхронная работа без заморозки окна

T800

Новичок
Пользователь
Дек 4, 2024
1
0
1
У меня есть мобильное приложение на kivy, работает хорошо, пока не пробую реализовать в нем асинхронное выполнение парсинга сайта, чтобы главное окно gui kivy не зависало и я мог взаимодействовать с ним во время выполнения долгого процесса. Тогда второй файл (ckecker), парсинг сайта, работает некорректно, особенно там, где выполняется ожидание выполнения js. Он то не дожидается выполнения js, то дожидается но с ошибкой где-то в процессе ожидания и вывода результата, в итоге результат не корректен.

Пример кода прикрепил без асинхронного выполнения. Повторюсь, второй скрипт (checker) работает нормально только в этом режиме (когда в нем вызывается функция через asyncio.run(), а внутри неё new_loop) иначе он не работает нормально с сайтом, на котором выполняетмя js скрипт. (Selenium не предлагать).

Так же я обрабатывал свой вопрос, в chatgpt - не помогло. Перепровал варианты:
- стандартные возможности kivymd (from kivymd.utils.asynckivy import start, sleep)
- asyncio (и весь main.run() в него и чисто функцию load или только второй скрипт ввызов)
- threading / concurrent.futures (чисто через них и совместно с asyncio)
- asynckivy (который отделоно устанавливается) тоже не заработал
Ничего не помогло. Приложение удавалось завести асинхронно работать, но вот результат со второго скрипта тогда выполнялся/приходил не правилоно/ый.

Из-за длины скрипты прикрепил.

Прошу протестировать данные мной исходники кода и попробовать запусть асинхронное выполнение kivy, чтобы не замораживало gui окно, но и при это выполнялся нормально (приходил результат с парсинга сайта) второй скрипт, особенно в функции где выпроняется ожидание выпронения js сайта. Для теста номер который нужно ввести в приложении: +37129502847 . Взял с парсингуемого сайта, что точно получить результат.
 

Вложения

  • checker.txt
    6,6 КБ · Просмотры: 2
  • main.txt
    6,7 КБ · Просмотры: 3
Последнее редактирование:

Форум IT Специалистов