python中的Flask-Script模块

关于Flask-Script

Flask-Script用来生成shell命令;为在Flask里编写额外的脚本提供了支持。

  • 这包括运行一个开发服务器,一个定制的Python命令行,用于执行
    初始化数据库、定时任务和其他属于web应用之外的命令行任务的脚本。
  • Flask-Script和Flask本身的工作方式类似。只需要定义和添加能从命令行中
    被Manager实例调用的命令即可。

Flask-Script的用处

Flask的Web开发服务器支持很多启动设置选项,但只能在脚本中作为参数传给app.run()函数。
这种方式很不方便,传递设置选项的理想方式是使用命令行参数。
Flask-Scrip就是这么一个Flask扩展,为Flask程序添加一个命令行解析器。
Flask-Script自带了一组常用选项,而且还支持自定义命令。

Flask-Script的配置

# coding=gbk
from flask_script import Manager
from flask import Flask
app = Flask(__name__)
# Manager类将追踪所有的在命令行中调用的命令和处理过程的调用运行情况;
# configure your app
manager = Manager(app)

if __name__ == "__main__":
    # 将启动Manger实例接收命令行中的命令。
    manager.run()

在这里插入图片描述

添加自定义shell命令

例如:对数据库进行操作

# coding=gbk
# -*- coding: <encoding name> -*-
from flask_sqlalchemy import  SQLAlchemy
from flask_script import Manager
from flask import Flask
import pymysql

app = Flask(__name__)
pymysql.install_as_MySQLdb()
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://root:westos@localhost/Todo'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = True
# app.config.from_pyfile('./config.py')
db = SQLAlchemy(app)
manager = Manager(app)
@manager.command
def dbinit():
    """数据库初始化信息"""
    db.drop_all()
    db.create_all()
    print('数据库初始化成功')

if __name__ == "__main__":
    # 将启动Manger实例接收命令行中的命令。
    manager.run()

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
你可以使用 Flask-SocketIO 库来实现在 Python 使用 Flask 和 SocketIO 进行流式返回。以下是一个简单的示例代码: 首先,确保你已经安装了 Flask-SocketIO 库。你可以使用以下命令进行安装: ``` pip install flask-socketio ``` 然后,在你的 Flask 应用程序导入必要的模块和类: ```python from flask import Flask, render_template from flask_socketio import SocketIO, emit app = Flask(__name__) app.config['SECRET_KEY'] = 'secret!' socketio = SocketIO(app) ``` 接下来,定义一个路由来渲染包含 SocketIO 客户端代码的 HTML 模板: ```python @app.route('/') def index(): return render_template('index.html') ``` 在 HTML 模板,你可以将 SocketIO 客户端代码放在合适的位置,例如在 `<head>` 标签之后: ```html <!DOCTYPE html> <html> <head> <!-- 其他头部内容 --> </head> <body> <!-- 页面主体内容 --> <script src="//cdnjs.cloudflare.com/ajax/libs/socket.io/1.3.6/socket.io.min.js"></script> <script type="text/javascript"> var socket = io.connect('http://' + document.domain + ':' + location.port); socket.on('message', function(data) { // 处理接收到的消息 console.log(data); }); // 发送消息到服务器 socket.emit('my event', {data: 'Message from client'}); </script> </body> </html> ``` 接下来,你可以定义一个事件处理器来处理客户端发送的消息,并返回流式数据: ```python @socketio.on('my event') def handle_my_custom_event(data): # 处理接收到的消息 # 这里可以进行一些耗时的操作,然后将结果逐步返回给客户端 for i in range(10): socketio.sleep(1) # 模拟耗时操作 emit('message', 'Step {}'.format(i)) emit('message', 'Final result') ``` 最后,运行应用程序: ```python if __name__ == '__main__': socketio.run(app) ``` 现在,当你访问应用程序的首页时,它将加载包含 SocketIO 客户端代码的 HTML 模板。客户端代码将连接到服务器的 SocketIO 通道,并发送一个名为 'my event' 的事件。服务器将接收到这个事件,并通过逐步返回的方式向客户端发送消息。 请根据你的需求进行适当修改和扩展以上示例代码。希望对你有所帮助!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值