当前位置:   article > 正文

python sanic视频_Python Web框架Sanic 静态文件

python sanic static

我们在写web app(网站)的时候会用到很多静态文件,比如css,JavaScript,图片等,这些文件及其文件夹可以通过

app.static()

方法注册,从而被访问到。该方法有两个必需参数,节点URL和文件名。

800b36d33806e6fe3564c19bd694f6eb.png

from sanic import Sanic

from sanic.blueprints import Blueprint

app = Sanic(__name__)

# 提供文件夹`static`里面的文件到URL `/static`的访问。

app.static('/static', './static')

# 使用`url_for`创建URL时,默认为'static'的`name`可被省略。

app.url_for('static', filename='file.txt') == '/static/file.txt'

app.url_for('static', name='static', filename='file.txt') == '/static/file.txt'

# 通过URL /the_best.png访问文件 /home/ubuntu/test.png

app.static('/the_best.png', '/home/ubuntu/test.png', name='best_png')

# 通过url_for创建静态文件URL

# 如果没有定义name 和 filename 参数时可以省略它们。

# 如果上面没有定义name='best_png',则下面的url_for可省略name参数

app.url_for('static', name='best_png') == '/the_best.png'

app.url_for('static', name='best_png', filename='any') == '/the_best.png'

# 需要为其它静态文件定义`name`

app.static('/another.png', '/home/ubuntu/another.png', name='another')

app.url_for('static', name='another') == '/another.png'

app.url_for('static', name='another', filename='any') == '/another.png'

# 同样, 也可以对blueprint使用`static`

bp = Blueprint('bp', url_prefix='/bp')

bp.static('/static', './static')

bp.static('/the_best.png', '/home/ubuntu/test.png', name='best_png')

app.blueprint(bp)

app.url_for('static', name='bp.static', filename='file.txt') == '/bp/static/file.txt'

app.url_for('static', name='bp.best_png') == '/bp/test_best.png'

app.run(host="0.0.0.0", port=8000)

对blueprint使用

url_for

创建的URL会加上

/bp

前缀。

注意:

Sanic 不提供静态文件夹的目录索引。

虚拟主机

方法

app.static()

支持虚拟主机。可以通过传入

host

参数实现。例如:

from sanic import Sanic

app = Sanic(__name__)

app.static('/static', './static')

app.static('/example_static', './example_static', host='www.example.com')

流化大文件

有时候需要Sanic提供大文件(比如,视频,图片等)的访问,可以选择使用

流文件

替代直接下载。比如:

from sanic import Sanic

app = Sanic(__name__)

app.static('/large_video.mp4', '/home/ubuntu/large_video.mp4', stream_large_files=True)

stream_large_files

True

时,Sanic将会使用

file_stream()

替代

file()

来提供静态文件访问。它默认的块大小是

1KB

,当然你可以根据需要修改块大小。比如:

from sanic import Sanic

app = Sanic(__name__)

chunk_size = 1024 * 1024 * 8 # 设置块大小为 8KB

app.static('/large_video.mp4', '/home/ubuntu/large_video.mp4', stream_large_files=chunk_size)

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/136922
推荐阅读
相关标签
  

闽ICP备14008679号