为了测试服务器速度,有时候需要提供下载文件,这里写了一段Python代码,可提供下载测试文件、还可以让客户端请求的时候自定义下载文件的大小,这样省去找一个固定大小的文件丢到服务器上的麻烦了。
download_test.py
from flask import Flask, request, Response from datetime import datetime app = Flask(__name__) @app.route("/") def index(): return "Hello World!" @app.route("/ping") def ping(): now_time = datetime.now().strftime('%Y-%m-%d %A %H:%M:%S') + ' ' + datetime.now().astimezone().strftime('%z') return "Time: " + now_time + "<br/><br/>" + str(request.headers).replace("\n", "<br/>") @app.route("/ping/download") def ping_download(): # file length in mb flimb = request.args.get("flimb") file_length = int(flimb) * 1024 * 1024 def generate(): resp_length = 0 while resp_length < file_length: chunk_length = 8192 if resp_length + 8192 > file_length: chunk_length = file_length - resp_length chunk = bytes(chunk_length) resp_length += 8192 yield chunk response = Response(generate(), content_type='application/octet-stream') response.headers['Content-Disposition'] = 'attachment;filename=test_download_file_%s.dat' % sizeof_fmt(file_length) response.headers['Content-Length'] = '%d' % file_length return response def sizeof_fmt(num, suffix='B'): for unit in ['', 'K', 'M', 'G', 'T', 'P', 'E', 'Z']: if abs(num) < 1024.0: return "%3.1f%s%s" % (num, unit, suffix) num /= 1024.0 return "%.1f%s%s" % (num, 'Yi', suffix)
Java、JSP版本请看这里:https://blog.terrynow.com/2020/12/25/java-jsp-download-test-server/
文章评论
Absolutely with you it agree. I think, what is it excellent idea.