APScheduler в flask с чертежами - PullRequest
0 голосов
/ 13 июля 2020

Я действительно изо всех сил пытаюсь понять, как запустить APScheduler в моем flask приложении.

Структура приложения:

/app
├── project/
│   ├── __init__.py
│   ├── main.py
├── app.py

app.py:

from project import app
app.run(host='0.0.0.0', port=80, debug=True)

init .py:

from flask import Flask

app = Flask(__name__)

# set up blueprints
from .main import main as main_blueprint
app.register_blueprint(main_blueprint)

# set up apscheduler
from apscheduler.schedulers.background import BackgroundScheduler
scheduler = BackgroundScheduler(daemon=True)
scheduler.start()

main.py:

from flask import Blueprint, render_template, Flask
from . import scheduler
import time

main = Blueprint('main', __name__)

@main.route('/schedule_test')
def schedule_test():
    scheduler.add_job(func=print_date_time, trigger="interval", seconds=3)

def print_date_time():
    print(time.strftime("%A, %d. %B %Y %I:%M:%S %p"))

Когда я запускаю это, я получаю сообщение об ошибке:

ImportError: cannot import name 'scheduler' from 'project' (/app/project/__init__.py)

Я уверен, что делаю что-то простое неправильно, но не могу с этим справиться.

Изменить: чтобы было ясно, приложение flask работает нормально, когда я удаляю ссылки на планировщик .

1 Ответ

0 голосов
/ 14 июля 2020

Вам следует переместить следующий код из __init__.py в отдельный файл Python.

# set up apscheduler
from apscheduler.schedulers.background import BackgroundScheduler
scheduler = BackgroundScheduler(daemon=True)
scheduler.start()

А затем из этого файла импортируйте scheduler и используйте его в своем маршруте flask.

Проверьте это:

В Python, как импортировать из __init__.py в тот же каталог

...