kuchuluk
@kuchuluk

Почему не работает как положено aioschedule в телеграм боте?

Здравствуйте!
Делаю парсер, который должен запускаться каждые 20 минут для поиска объявлений для бота телеграм.
Но после первого запуска вылетает ошибка и он начинает беспрестанно срабатывать каждую секунду.
Сама функция парсинга находится в хэндлере:
from selenium import webdriver
from selenium.webdriver.common.by import By
import asyncio
import aioschedule as schedule

import time

def trackingStart():
    #options
    options = webdriver.ChromeOptions()

    #disable webdriver mode

    #for older ChromeDriver 79.8.3945 and over
    options.add_argument("--disable-blink-features=AutomationControlled")

    driver = webdriver.Chrome(
        executable_path="E:\\OSPanel\\domains\\avitoparse.local\\chromedriver\\chromedriver.exe",
        options=options
    )

    try:
        url = "https://avi.kz/mobilnye-telefony/"
        driver.get(url=url)
        allAdsFromPage = driver.find_elements(By.TAG_NAME, "h3")
        for ad in allAdsFromPage:
            dateAdded = ad.find_element(By.CLASS_NAME, "date-text-KmWDf")
            dateText = dateAdded.text
            if dateText.find('минут') != -1:
                minuteNum = dateText.split()
                # если меньше 20, то вывожу
                if int(minuteNum[0]) < 20:
                    adName = ad.find_element(By.TAG_NAME, "h3")
                    print('Свежее объявление - ' + adName.text + '\n' + dateAdded.text)

        time.sleep(1)
    except Exception as ex:
        print(ex)
    finally:
        driver.close()
        driver.quit()

async def scheduler():
    schedule.every(1).minutes.do(trackingStart)
    while True:
        await schedule.run_pending()
        await asyncio.sleep(1)

Вызываю в главном файле запуска бота:
from aiogram.utils import executor
from bot_create import dp
import asyncio
from handlers import mainhand, parseavitohand

async def on_startup(_):
    print('Бот вышел в онлайн')
    asyncio.create_task(parseavitohand.scheduler())

executor.start_polling(dp, skip_updates=True, on_startup=on_startup)

Ошибка вылезает эта:
Task exception was never retrieved
future: e\__init__.py:455> exception=TypeError("object NoneType can't be used in 'await' expression")>
Traceback (most recent call last):
File "E:\OSPanel\domains\avitoparse.local\venv\lib\site-packages\aioschedule\__init__.py", line 462, in run
ret = await self.job_func()
TypeError: object NoneType can't be used in 'await' expression

Не могу понять на какой именно await он ругается?
  • Вопрос задан
  • 401 просмотр
Решения вопроса 1
Vindicar
@Vindicar
RTFM!
aioschedule работает с корутинами. trackingStart() - не корутина, а обычная синхронная процедура.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы