您现在的位置是:首页 >技术杂谈 >Flask----flask-appbuilder + 项目部署网站首页技术杂谈
Flask----flask-appbuilder + 项目部署
简介Flask----flask-appbuilder + 项目部署
flask-appbuilder
官方文档
使用flask-appbuilder创建一个简单的项目,它是一个基于Flask的web框架,实现了数据的自动CRUD。
安装
pip install flask-appbuilder
# 帮助信息
flask --help
flask routes # 查看所有的路由
flask run # 运行开发服务器
flask shell # 进入shell命令行
flask fab # fab 命令组
flask fab --help # 帮助信息
babel-compile Babel, Compiles all translations
babel-extract Babel, Extracts and updates all messages marked for...
collect-static Copies flask-appbuilder static files to your...
create-addon Create a Skeleton AddOn (needs internet connection...
create-admin Creates an admin user
create-app Create a Skeleton application (needs internet...
create-db Create all your database objects (SQLAlchemy...
create-permissions Creates all permissions and add them to the ADMIN...
create-user Create a user
export-roles Exports roles with permissions and view menus to...
import-roles Imports roles with permissions and view menus from...
list-users List all users on the database
list-views List all registered views
reset-password Resets a user's password
security-cleanup Cleanup unused permissions from views and roles.
security-converge Converges security deletes...
version Flask-AppBuilder package version
创建应用程序
使用flask fab管理命令,快速创建应用程序。
# 快速创建应用程序
flask fab create-app
# 输入项目名等
编写首页视图
- 配置,在项目根目录下添加config.py
# __author__ = "laufing"
import os
BASE_DIR = os.path.dirname(os.path.abspath(__file__))
# openssl rand -base64 42 生产秘钥
SECRET_KEY = "ulaO869huOl68ZhTZiNcOIq9zxwTSLd/LH40bv69IyUcb1xRssbAMrol"
SQLALCHEMY_DATABASE_URI = f"sqlite:///{BASE_DIR}/lauf.db"
- 编写视图
# views中
from flask_appbuilder import IndexView, BaseView
class MyIndexView(IndexView):
index_template = "templates/index.html"
启动项目
# flask run --help
flask run -h localhost -p 5050 --reload --with-threads
WSGI服务部署
- wsgi: web server gateway interface
- python实现的web应用框架,部署时基本都是使用WSGI服务器进行部署,如部署django使用uwsgi,部署flask可以使用gunicorn。
- gunicorn 支持python的web框架,自动worker进程管理,要求python 3.5+
gunicorn + flask 部署
- 安装gunicorn
# 使用pip包管理工具,安装到python环境中
pip install gunicorn
# 安装协程并发库,linux下需要安装apt install python-dev libevent
pip install gevent eventlet
另外也可以使用源码安装。
Ubuntu 20.04默认仓库就带有gunicorn,可以如下直接安装:
$ sudo apt-get update
$ sudo apt-get install gunicorn
- 配置项介绍
可以在配置文件中使用,也可以在命令行中使用。
# config_gunicorn.py 它是一个python文件
# 绑定主机地址
bind='0.0.0.0:8000' # 局域网ip 或者公网内的局域网
# 注意没有port选项
- gunicorn 启动flask
- 命令行
# 开启三个worker进程
gunicorn -w 3 -b 0.0.0.0:8000 my_flask_project.app:app
# 使用.表示路径,找到对应的模块
# 使用:拼接模块中的app对象
# 也可以my_flask_project.app:create_app() 工厂函数执行
# 默认加载当前目录下的gunicorn.conf.py
- 使用配置文件启动
# 创建一个配置文件
# config_gunicorn.py 命令行-c xxxconfig.py 指定配置文件
bind='0.0.0.0:8000' # 绑定ip地址 命令行下用--bind ip:port
daemon='true' # 后台启动 命令行 --daemon
worker_class='gevent' # worker进程的类型 命令行下 -k
workers=4 # 开启4个worker进程
threads=4 # 每个worker进程中4个线程
# 日志输出
loglevel='info'
accesslog='logs/access.log'
errorlog='logs/error.log'
启动flask
# 使用gunicorn启动flask应用
gunicorn -c config_gunicorn.py package.module:app
风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。