您现在的位置是:首页 >技术杂谈 >Flask----flask-appbuilder + 项目部署网站首页技术杂谈

Flask----flask-appbuilder + 项目部署

laufing 2024-06-07 00:00:03
简介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官方文档

  1. 安装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
  1. 配置项介绍
    可以在配置文件中使用,也可以在命令行中使用。
# config_gunicorn.py  它是一个python文件

# 绑定主机地址
bind='0.0.0.0:8000'  # 局域网ip  或者公网内的局域网
# 注意没有port选项

其他更多配置项参考
 

  1. 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
风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。