Flask开发的Web服务器支持很多启动设置选项,但是只能在脚本中作为参数传递给app.run()函数。每次想要不同的启动方式都需要改动源码,不是很方便。
Flask-Script是一个Flask扩展,为Flask程序添加了一个命令解析器。Flask-Script自带了一组常用选项,而且还支持自定义命令。
一、使用pip安装
# pyCharm Terminal
pip install flask-script
二、修改源码
# manager.py
'''
用于启动程序以及其他的程序任务
'''
import os
from app import create_app, db
from app.models import User,Role
from flask_script import Manager,Shell
from flask_migrate import Migrate, MigrateCommand
app = create_app(os.getenv('FLASK_CONFIG') or 'default')
manager = Manager(app) #实例化Manager类,传入app实例作为参数
migrate = Migrate(app,db)
def make_shell_context(): #定义一个函数
return dict(app=app, db=db, User=User, Role=Role)
manager.add_command('shell',Shell(make_context=make_shell_context)) #将函数传入Shell,再讲返回值与'shell'字符串绑定
manager.add_command('db',MigrateCommand) #将MigrateCommand类与'db'字符串绑定
if __name__=='__main__':
manager.run() #启动方式变成manager.run()
或者直接在函数定义前,加上@manager.command装饰器
# manager.py
@manager.command
def test():
'''Run the unittest'''
import unittest
tests = unittest.TestLoader().discover('tests')
unittest.TextTestRunner(verbosity=2).run(tests)
三、运行查看可用的启动选项
运行manager.py,可以选择点击按钮运行,或者 在Terminal输入:python manager.py。效果是一样的。
运行后输出了:
可以看到positional arguments有三个选项:shell,db,runserver,就是支持的启动选项。其中db,shell都是自定义的。
四、使用启动选项
举几个使用启动选项的例子:
1.
# pyCharm Terminal
python manager.py runserver
将以调试模式启动Web服务器。相当于运行app.run(debug=True)
2.
加了 --help,就会显示runserver的帮助信息,例如其他子选项。
3.
加了--host xxx.xx.xx.xx(xxx.xx.xx.xx是计算机的外网 IP地址),这样就可以在连接互联网的电脑上访问服务器了。