Qual é a abordagem correta para chamar funções após a execução de um aplicativo de balão?
Estou um pouco confuso sobre como fazer algo que pensei que seria bastante simples. Eu tenho um aplicativo simples escrito usandoFlask
. Parece algo assim:
from flask import Flask
app = Flask(__name__)
def _run_on_start(a_string):
print "doing something important with %s" % a_string
@app.route('/')
def root():
return 'hello world'
if __name__ == "__main__":
if len(sys.argv) < 2:
raise Exception("Must provide domain for application execution.")
else:
DOM = sys.argv[1]
_run_on_start("%s" % DOM)
app.run(debug=True)
O que estou descobrindo é que meu terminal está exibindo as instruções de impressão em_run_on_start
mas não do outro código de depuração usual do aplicativo Flask. Se eu remover a chamada antes do app.run, a saída será normal. Além disso, estou encontrando a saída de_run_on_start
ser repetido duas vezes na inicialização, embora eu não saiba se é alguma saída estranha ou se a função está sendo chamada duas veze
Suponho que essa não seja a maneira correta de adicionar uma chamada de função antes de ligar paraapp.run
. Procurei nos documentos do Flask e encontrei menções de vários decoradores que podem ser usados, que permitem executar uma função antes / depois de determinadas solicitações, mas quero executar a chamada quando o servidor de aplicativos estiver em execução.
Além disso, percebo que se eu chamar esse módulo de outro módulo, ou seja, não quando__name__ != "__main__"
meu não vou receber minha ligação para_run_on_start
.
Qual é a abordagem correta aqui? Nos dois casos, quando estou iniciando no CL e em outro módulo?