✅作者简介:热爱科研的算法开发者,Python、Matlab项目可交流、沟通、学习。
🍎个人主页:算法工程师的学习日志
工作上需要搭建一个音频推送服务,考虑到使用python Flask搭建一个服务,下面给出简单的代码,代码中每次请求推送当前目录下的音频文件。
from flask import Flask
from flask import Response
import os
app = Flask(__name__)
folder = './video'
@app.route('/video/<file_key>')
def stream_mp3(file_key):
def generate():
path = os.path.join(folder, file_key)
with open(path, 'rb') as video:
data = video.read(1024)
while data:
yield data
data = video.read(1024)
return Response(generate(), mimetype="video")
if __name__ == '__main__':
app.run(host='0.0.0.0', port=8080)
文件下面有2个视频文件供调试,
代码中读取文件每次读取1024字节,而不是一次全部读取到文件中,于是利用到了python 的 yield,为了简化问题,上面仅仅传递当前系统指定路径下的文件(实际工作中还有很多要处理,日志模块、视频处理分析等其他模块)
运行代码
浏览器输入:
http://127.0.0.1:8080/video/1.mp4
则弹出视频页面。
原创字数要达到300字就多写几句
Flask
Flask 是一个微型的 Python 开发的 Web 框架,基于Werkzeug WSGI工具箱和Jinja2 模板引擎。Flask使用BSD授权。Flask也被称为“microframework”,因为它使用简单的核心,用extension增加其他功能。Flask没有默认使用的数据库、窗体验证工具。然而,Flask保留了扩增的弹性,可以用Flask-extension加入这些功能:ORM、窗体验证工具、文件上传、各种开放式身份验证技术。
示例代码:
from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello():
return "Hello World!"
if __name__ == "__main__":
app.run()
启动
$ pip install Flask
$ python hello.py
* Running on http://localhost:5000/
特性
- 内置开发用服务器和debugger
- 集成单元测试(unit testing)
- RESTful request dispatching
- 使用Jinja2模板引擎
- 支持secure cookies(client side sessions)
- 100% WSGI 1.0兼容
- Unicode based
- 详细的文件、教学
- Google App Engine兼容
- 可用Extensions增加其他功能