колба питона before_first_request_funcs - PullRequest
0 голосов
/ 27 декабря 2018

Я хочу использовать @app.before_first_request_funcs для запуска нескольких функций в качестве повторяющихся задач перед первым запросом к моему приложению.Может ли кто-нибудь дать мне пример использования @app.before_first_request_funcs?

from flask import Flask
import threading
import time
app = Flask(__name__)    
def activate_job():
    def run_job():
        while True:
            print("recurring task")
            time.sleep(3)
    thread = threading.Thread(target=run_job())
    thread.start()    
def activate_job2():
    def run_job2():
        while True:
            print("recurring task2")
            time.sleep(3)
    thread = threading.Thread(target=run_job2())
    thread.start()     
@app.after_first_request(activate_job())
@app.before_first_request(activate_job2())    
@app.route('/')
def home():
    return {"action" : "This has done something"}        
if __name__ == '__main__':
    print(app.before_first_request_funcs)
    app.run()

1 Ответ

0 голосов
/ 27 декабря 2018

Согласно документации , вы должны использовать @app.before_first_request, чтобы делать то, что вы хотите.

from flask import Flask
app = Flask(__name__)
def some_func(some_arg):
    print('coucou')

# @app.before_first_request(some_func)
@app.route('/')
def home():
    return {"action" : "This has done something"}


if __name__ == '__main__':
    print(app.before_first_request_funcs)
    app.run()

Вы можете увидеть поведение метода before_first_request_funcs то есть не декоратор, комментируя и раскомментируя декоратор before_first_request.

Если он прокомментирован, он напечатает пустой список, и еслиВы раскомментируете строку, она вернет список одного элемента, содержащего объект функции some_func (для меня это был [<function some_func at 0x0000021393A0AD90>]).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...