Balão: não é possível importar o nome 'app'
Tentando executar meu arquivo pythonupdater.py
para SSH em um servidor e execute alguns comandos a cada intervalo de tempo definido. Estou usando o APScheduler para executar a funçãoupdate_printer()
de__init__.py
. Inicialmente eu tenho umworking outside of application context error
mas alguém sugeriu que eu apenas importasse o aplicativo de__init__
.py. No entanto, não está funcionando tão bem. Eu continuo recebendo umcannot import name 'app'
erro.
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'])
...
Estrutura do arquivo
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'
O que preciso fazer para acessar o app.config do updater.py e evitar um "trabalho fora do erro de contexto do aplicativo" se executado no APScheduler?