Моя цель - заставить произвольный код работать после запуска моего приложения Flask. Вот что у меня есть:
def run():
from webapp import app
app.run(debug=True, use_reloader=False)
В идеале я мог бы просто сделать это:
def run():
from webapp import app
app.run(debug=True, use_reloader=False)
some_code()
Но код не продолжается после app.run()
, поэтому some_code() никогда не запускается.
Решение, над которым я сейчас работаю, состоит в том, чтобы запустить some_code() в отдельном потоке от app.run(), создать функцию перед первым запросом, которая устанавливает это:
app.is_running = True
Затем заставьте some_code() выполнить базовый запрос к приложению, чтобы выполнялся код "до первого запроса". Это довольно запутанно и будет трудно документировать. Я бы предпочел использовать параметр app.is_running, который уже есть в Flask, или использовать декоратор @app.after_server_start
, но, насколько мне известно, ни один из них не существует.
Помогите мне сделать этот код лучше?
Посмертно: каждый раз, когда я думаю об этой проблеме, мне хочется, чтобы существовал декоратор @app.after_server_start
.