基于Python flask轻量web框架简单应用

这篇博客介绍了如何使用Python的Flask框架搭建一个视频处理接口,并通过flask_cors解决跨域问题。作者首先安装Flask和flask_cors库,然后创建了一个接收视频URL的接口,检查视频是否存在并记录路径。当遇到跨域问题时,通过@cross_origin()装饰器解决了这个问题。最后,服务在8091端口上运行,监听来自前端的请求。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言
用户将视频上传后,需要对视频做一些处理,那么Python这样的工具当然是节省时间完成开发任务的首选(其实是其他的语言我不太会~)。那么,既然工具用Python来完成了,那么这个让脚本运行的接口也用Python来写一个吧。

flask 轻量web框架使用
web框架也有很多,选取了flask的主要原因是需求只要调用python脚本,无需对数据库操作,其他原因此处不再赘述。
环境:win10,Python 3.6
1 flask的安装

pip install flask

2 实现接口监听


import os
import flask, json
from flask import request
import logging

'''
flask: web框架,通过flask提供的装饰器@server.route()将普通函数转换为服务
'''
# 创建一个服务,把当前这个python文件当做一个服务
server = flask.Flask(__name__)

# server.config['JSON_AS_ASCII'] = False
# @server.route()可以将普通函数转变为服务 登录接口的路径、请求方式
@server.route('/dealWYVideo', methods=['get', 'post'])
def dealWYVideo():
    # 获取通过url请求传参的数据
    videoPath = request.values.get('url')
    if os.path.exists(videoPath):
        logging.info("put video:",videoPath)
        res = {'code': 200, 'message': '视频处理接入成功'}
        file_handle = open('video.txt', mode='a')
        # 在txt中写入刚上传的视频的路径
        file_handle.write(videoPath + '\n')
        file_handle.close()
        return json.dumps(res, ensure_ascii=False)
    else:
        logging.warning("no exit:",videoPath)
        res = {'code': 400, 'message': '视频处理接入失败'}
        return json.dumps(res, ensure_ascii=False)

def runServe():
    server.run(debug=True, port=8091, host='localhost')  # 指定端口、host,0.0.0.0代表不管几个网卡,任何ip都可以访问

if __name__ == '__main__':
    runServe()

3 跨域问题
在前端调用上述接口,发现报错了,仔细一看,跨域问题:

No 'Access-Control-Allow-Origin' header is present on the requested 

那么怎么解决呢?使用 flask_cors 这个库解决。就一句话@cross_origin()就解决了。

# 安装
1. pip install flask_cors
# 引入模块
2. from flask_cors import cross_origin
#使用
3. @cross_origin()

最终实现代码

import os
import flask, json
from flask import request
from flask_cors import cross_origin
import logging

'''
flask: web框架,通过flask提供的装饰器@server.route()将普通函数转换为服务
'''
# 创建一个服务,把当前这个python文件当做一个服务
server = flask.Flask(__name__)

# server.config['JSON_AS_ASCII'] = False
# @server.route()可以将普通函数转变为服务 登录接口的路径、请求方式
@server.route('/dealWYVideo', methods=['get', 'post'])
@cross_origin()
def dealWYVideo():
    # 获取通过url请求传参的数据
    videoPath = request.values.get('url')
    if os.path.exists(videoPath):
        logging.info("put video:",videoPath)
        res = {'code': 200, 'message': '视频处理接入成功'}
        file_handle = open('video.txt', mode='a')
        # 在txt中写入刚上传的视频的路径
        file_handle.write(videoPath + '\n')
        file_handle.close()
        return json.dumps(res, ensure_ascii=False)
    else:
        logging.warning("no exit:",videoPath)
        res = {'code': 400, 'message': '视频处理接入失败'}
        return json.dumps(res, ensure_ascii=False)

def runServe():
    server.run(debug=True, port=8091, host='localhost')  # 指定端口、host,0.0.0.0代表不管几个网卡,任何ip都可以访问

if __name__ == '__main__':
    runServe()
小钗有幸进入框架组做webapp的框架开发,并且基于框架的业务频道用于生产,各频道遍地开花,取得了不错的成绩, 但是,随着业务的快速迭代,框架为满足业务需求做了很多业务的事情,代码中也慢慢出现了坏味道,并且会发现有一些设计不合理的地方。 想在工作中做调整基本不可能,所依赖的第三方库搞掉也有很大的风险。这个时候小钗就萌生出开发出一套干净的轻webapp框架的想法,于是该框架便出现了。 诚然,此框架比不上Backbone,比不了anglarJS,甚至本身也会有一些问题,但是作为初步接触前端的同学,或者想在前端看到一些设计思想的同学,该框架还是有他一些优势。而且这个代码主要用于学习交流,我们带着看看不吃亏的想法,还是可以接触一下他的嘛!!!支持情况该框架是移动端框架,主要支持IOS6 、android4 框架发展第一期-MVC该框架第一期的目标是简单webapp MVC的实现,现在也基本实现了,app支持hashChange与pushState两种方式做路由加载view,对此有兴趣的同学可以看看helloWord 关于app与页面级View的关系如下:第二期-通用工具框架第二期的想法是,完善本身一些通用的东西,比如UI组件或者简单的flip手势工具等,这里小钗不是专业的前端,就直接从线上将公司的CSS Down下来了,也用了他的Dom结构 但是,整个组件的扩展非常方便,有兴趣的同学看看UI一块的代码,UI的继承关系如下:第三期-ABTesting框架第三期目标是实现前端ABTesting方案第四期-ipad适配框架第四期的目标是一套业务代码,可以同时用于mobile与ipad第五期-Hybrid框架第五期目标是实现Hybrid交互适配,由于小钗本身不懂native开发所以此方案要靠后随机期-疑难杂症框架还会单开一个频道做一些疑难杂症处理,比如: ① fixed问题 ② 区域滚动问题 ③ app唤醒 ④ History路径问题等更多信息DEMO想简单看看demo的朋友请到:http://yexiaochai.github.io/blade/ 标签:blade​
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值