如果你需要在启动Flask应用程序之后但严格在第一个请求之前执行一些代码,而不是由@ app.before_first_request可以处理的第一个请求的执行触发,则应使用CESCO所说的Flask_Script,但是你可以继承Server类并覆盖__ call __
方法,而不是使用@ manager.command覆盖runserver命令:
from flask import Flask
from flask_script import Manager, Server
def custom_call():
#Your code
pass
class CustomServer(Server):
def __call__(self, app, *args, **kwargs):
custom_call()
#Hint: Here you Could manipulate app
return Server.__call__(self, app, *args, **kwargs)
app = Flask(__name__)
manager = Manager(app)
# Remeber to add the command to your Manager instance
manager.add_command('runserver', CustomServer())
if __name__ == "__main__":
manager.run()
这样,你就不会覆盖runserver命令的默认选项。