AttributeError: модуль «apscheduler.schedulers.asyncio» не имеет атрибута «get_event_loop»

Я пытаюсь реализовать часовой процесс для использования в Heroku dyno. Я использую Python 3.6. Тактовый процесс будет запускаться каждые 3 часа. Это код:

import os
import sys

import requests
from apscheduler.schedulers import asyncio
from apscheduler.schedulers.asyncio import AsyncIOScheduler
from apscheduler.triggers.interval import IntervalTrigger
from webdriverdownloader import GeckoDriverDownloader

from scraper.common import main


def get_driver():
    return True

def notify(str):
    return True;


if __name__ == '__main__':
    scheduler = AsyncIOScheduler()
    get_driver()
    scheduler.add_job(main, trigger=IntervalTrigger(hours=3))

    scheduler.start()
    # Execution will block here until Ctrl+C (Ctrl+Break on Windows) is pressed.
    try:
        loop = asyncio.get_event_loop()
        loop.run_until_complete(asyncio.wait())
    except (KeyboardInterrupt, SystemExit):
        pass

Сначала я пытался с

asyncio.get_event_loop().run_forever()

Однако я прочитал, что это не поддерживается в python 3.6, поэтому я изменил это выражение на run_until_complete.

Если я запускаю этот пример, код выводит:

AttributeError: модуль «apscheduler.schedulers.asyncio» не имеет атрибута «get_event_loop»

Кто-нибудь знает, почему возникает эта ошибка? Любая помощь приветствуется. Заранее спасибо!


person Matej J    schedule 15.07.2020    source источник
comment
run_forever был доступен с тех пор, как asyncio был добавлен в Python 3.4. Вы можете спутать его с asyncio.run, который был добавлен в 3.7.   -  person dirn    schedule 15.07.2020


Ответы (1)


Вы импортируете не модуль asyncio из стандартной библиотеки, а модуль asyncio из библиотеки apscheduler. Вы можете убедиться в этом, перейдя по ссылке здесь.

Есть только две вещи, которые вы можете импортировать из этого пространства имен:

  1. run_in_event_loop
  2. AsyncIOScheduler

Если вам нужно использовать низкоуровневый asyncio API, просто импортируйте asyncio непосредственно из стандартной библиотеки.

person gold_cy    schedule 15.07.2020