Flask: Name 'app' kann nicht importiert werden
Versuche meine Python-Datei auszuführenupdater.py
zu SSH zu einem Server und führen Sie einige Befehle alle paar eingestellten Intervalle aus oder so. Ich verwende APScheduler, um die Funktion @ auszuführeupdate_printer()
von__init__.py
. Anfangs habe ich einworking outside of application context error
aber jemand schlug vor, dass ich nur App von @ importier__init__
.py. Allerdings klappt es nicht so gut. Ich bekomme immer eincannot import name 'app'
Error
app.py
from queue_app import app
if __name__ == '__main__':
app.run(debug=True)
__ init __. py
from flask import Flask, render_template
from apscheduler.schedulers.background import BackgroundScheduler
from queue_app.updater import update_printer
app = Flask(__name__)
app.config.from_object('config')
@app.before_first_request
def init():
sched = BackgroundScheduler()
sched.start()
sched.add_job(update_printer, 'interval', seconds=10)
@app.route('/')
def index():
return render_template('index.html')
updater.py
import paramiko
import json
from queue_app import app
def update_printer():
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(app.config['SSH_SERVER'], username = app.config['SSH_USERNAME'], password = app.config['SSH_PASSWORD'])
...
Dateistruktur
queue/
app.py
config.py
queue_app/
__init__.py
updater.py
Erro
Traceback (most recent call last):
File "app.py", line 1, in <module>
from queue_app import app
File "/Users/name/queue/queue_app/__init__.py", line 3, in <module>
from queue_app.updater import update_printer
File "/Users/name/queue/queue_app/updater.py", line 3, in <module>
from queue_app import app
ImportError: cannot import name 'app'
Was muss ich tun können, um von updater.py auf die app.config zuzugreifen und den Fehler "Arbeiten außerhalb des Anwendungskontexts" zu vermeiden, wenn ich mit APScheduler ausgeführt werde?